77
77
REINDEX_POINT = '/reindex'
78
78
79
79
80
+ def trigger_reindex ():
81
+ # Signal the sync/indexer thread.
82
+ sleep_event .set ()
83
+ sleep_event .clear ()
84
+
85
+
80
86
@auth .verify_token
81
87
def verify_token (token ):
82
88
if expected_token is None :
@@ -89,9 +95,7 @@ def verify_token(token):
89
95
@app .route (REINDEX_POINT )
90
96
@auth .login_required
91
97
def index ():
92
- # Signal the sync/indexer thread.
93
- sleep_event .set ()
94
- sleep_event .clear ()
98
+ trigger_reindex ()
95
99
96
100
return "Reindex triggered"
97
101
@@ -263,18 +267,13 @@ def merge_commands_env(commands, env):
263
267
return commands
264
268
265
269
266
- def indexer_no_projects (logger , uri , config_path , sync_period ,
267
- extra_indexer_options ):
270
+ def indexer_no_projects (logger , uri , config_path , extra_indexer_options ):
268
271
"""
269
272
Project less indexer
270
273
"""
271
274
272
275
wait_for_tomcat (logger , uri )
273
276
274
- periodic_sync = True
275
- if sync_period is None or sync_period == 0 :
276
- periodic_sync = False
277
-
278
277
while True :
279
278
indexer_options = ['-s' , OPENGROK_SRC_ROOT ,
280
279
'-d' , OPENGROK_DATA_ROOT ,
@@ -291,29 +290,27 @@ def indexer_no_projects(logger, uri, config_path, sync_period,
291
290
jar = OPENGROK_JAR , doprint = True )
292
291
indexer .execute ()
293
292
294
- if periodic_sync :
295
- sleep_seconds = sync_period * 60
296
- logger .info ("Sleeping for {} seconds" .format (sleep_seconds ))
297
- time .sleep (sleep_seconds )
298
- elif not periodic_sync :
299
- logger .info ("Waiting for reindex trigger on {} endpoint" .
300
- format (REINDEX_POINT ))
301
- sleep_event .wait ()
293
+ logger .info ("Waiting for reindex to be triggered" )
294
+ sleep_event .wait ()
302
295
303
296
304
- def project_syncer (logger , loglevel , uri , config_path , sync_period ,
305
- numworkers , env ):
297
+ def timeout_loop (logger , sync_period ):
298
+ while True :
299
+ sleep_seconds = sync_period * 60
300
+ logger .info ("Sleeping for {} seconds" .format (sleep_seconds ))
301
+ time .sleep (sleep_seconds )
302
+
303
+ trigger_reindex ()
304
+
305
+
306
+ def project_syncer (logger , loglevel , uri , config_path , numworkers , env ):
306
307
"""
307
308
Wrapper for running opengrok-sync.
308
309
To be run in a thread/process in the background.
309
310
"""
310
311
311
312
wait_for_tomcat (logger , uri )
312
313
313
- periodic_sync = True
314
- if sync_period is None or sync_period == 0 :
315
- periodic_sync = False
316
-
317
314
while True :
318
315
refresh_projects (logger , uri )
319
316
@@ -351,14 +348,8 @@ def project_syncer(logger, loglevel, uri, config_path, sync_period,
351
348
352
349
save_config (logger , uri , config_path )
353
350
354
- if periodic_sync :
355
- sleep_seconds = sync_period * 60
356
- logger .info ("Sleeping for {} seconds" .format (sleep_seconds ))
357
- time .sleep (sleep_seconds )
358
- elif not periodic_sync :
359
- logger .info ("Waiting for reindex trigger on {} endpoint" .
360
- format (REINDEX_POINT ))
361
- sleep_event .wait ()
351
+ logger .info ("Waiting for reindex to be triggered" )
352
+ sleep_event .wait ()
362
353
363
354
364
355
def create_bare_config (logger , use_projects , extra_indexer_options = None ):
@@ -435,6 +426,30 @@ def check_index_and_wipe_out(logger):
435
426
logger .error ("cannot delete '{}': {}" .format (path , e ))
436
427
437
428
429
+ def start_rest_thread (logger ):
430
+ rest_port = get_num_from_env (logger , 'REST_PORT' , 5000 )
431
+ token = os .environ .get ('REST_TOKEN' )
432
+ global expected_token
433
+ if token :
434
+ logger .debug ("Setting expected token for REST endpoint"
435
+ "on port {}" .format (rest_port ))
436
+ expected_token = token
437
+ logger .debug ("Starting REST thread to listen for requests "
438
+ "on port {} on the {} endpoint" .
439
+ format (rest_port , REINDEX_POINT ))
440
+ rest_thread = threading .Thread (target = rest_function ,
441
+ name = "REST thread" ,
442
+ args = (logger , rest_port ), daemon = True )
443
+ rest_thread .start ()
444
+
445
+
446
+ def start_timeout_thread (logger , sync_period ):
447
+ thread = threading .Thread (target = timeout_loop ,
448
+ name = "Timeout thread" ,
449
+ args = (logger , sync_period ), daemon = True )
450
+ thread .start ()
451
+
452
+
438
453
def main ():
439
454
log_level = os .environ .get ('OPENGROK_LOG_LEVEL' )
440
455
if log_level :
@@ -519,32 +534,19 @@ def main():
519
534
worker_function = project_syncer
520
535
syncer_args = (logger , log_level , uri ,
521
536
OPENGROK_CONFIG_FILE ,
522
- sync_period , num_workers , env )
537
+ num_workers , env )
523
538
else :
524
539
worker_function = indexer_no_projects
525
- syncer_args = (logger , uri , OPENGROK_CONFIG_FILE , sync_period ,
540
+ syncer_args = (logger , uri , OPENGROK_CONFIG_FILE ,
526
541
extra_indexer_options )
527
542
528
543
logger .debug ("Starting sync thread" )
529
544
sync_thread = threading .Thread (target = worker_function , name = "Sync thread" ,
530
545
args = syncer_args , daemon = True )
531
546
sync_thread .start ()
532
547
533
- if sync_period == 0 :
534
- rest_port = get_num_from_env (logger , 'REST_PORT' , 5000 )
535
- token = os .environ .get ('REST_TOKEN' )
536
- global expected_token
537
- if token :
538
- logger .debug ("Setting expected token for REST endpoint"
539
- "on port {}" .format (rest_port ))
540
- expected_token = token
541
- logger .debug ("Starting REST thread to listen for requests "
542
- "on port {} on the {} endpoint" .
543
- format (rest_port , REINDEX_POINT ))
544
- rest_thread = threading .Thread (target = rest_function ,
545
- name = "REST thread" ,
546
- args = (logger , rest_port ), daemon = True )
547
- rest_thread .start ()
548
+ start_rest_thread (logger )
549
+ start_timeout_thread (logger , sync_period )
548
550
549
551
# Start Tomcat last. It will be the foreground process.
550
552
logger .info ("Starting Tomcat" )
0 commit comments