7777REINDEX_POINT = '/reindex'
7878
7979
80+ def trigger_reindex ():
81+ # Signal the sync/indexer thread.
82+ sleep_event .set ()
83+ sleep_event .clear ()
84+
85+
8086@auth .verify_token
8187def verify_token (token ):
8288 if expected_token is None :
@@ -89,9 +95,7 @@ def verify_token(token):
8995@app .route (REINDEX_POINT )
9096@auth .login_required
9197def index ():
92- # Signal the sync/indexer thread.
93- sleep_event .set ()
94- sleep_event .clear ()
98+ trigger_reindex ()
9599
96100 return "Reindex triggered"
97101
@@ -263,18 +267,13 @@ def merge_commands_env(commands, env):
263267 return commands
264268
265269
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 ):
268271 """
269272 Project less indexer
270273 """
271274
272275 wait_for_tomcat (logger , uri )
273276
274- periodic_sync = True
275- if sync_period is None or sync_period == 0 :
276- periodic_sync = False
277-
278277 while True :
279278 indexer_options = ['-s' , OPENGROK_SRC_ROOT ,
280279 '-d' , OPENGROK_DATA_ROOT ,
@@ -291,29 +290,27 @@ def indexer_no_projects(logger, uri, config_path, sync_period,
291290 jar = OPENGROK_JAR , doprint = True )
292291 indexer .execute ()
293292
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 ()
302295
303296
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 ):
306307 """
307308 Wrapper for running opengrok-sync.
308309 To be run in a thread/process in the background.
309310 """
310311
311312 wait_for_tomcat (logger , uri )
312313
313- periodic_sync = True
314- if sync_period is None or sync_period == 0 :
315- periodic_sync = False
316-
317314 while True :
318315 refresh_projects (logger , uri )
319316
@@ -351,14 +348,8 @@ def project_syncer(logger, loglevel, uri, config_path, sync_period,
351348
352349 save_config (logger , uri , config_path )
353350
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 ()
362353
363354
364355def create_bare_config (logger , use_projects , extra_indexer_options = None ):
@@ -435,6 +426,30 @@ def check_index_and_wipe_out(logger):
435426 logger .error ("cannot delete '{}': {}" .format (path , e ))
436427
437428
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+
438453def main ():
439454 log_level = os .environ .get ('OPENGROK_LOG_LEVEL' )
440455 if log_level :
@@ -519,32 +534,19 @@ def main():
519534 worker_function = project_syncer
520535 syncer_args = (logger , log_level , uri ,
521536 OPENGROK_CONFIG_FILE ,
522- sync_period , num_workers , env )
537+ num_workers , env )
523538 else :
524539 worker_function = indexer_no_projects
525- syncer_args = (logger , uri , OPENGROK_CONFIG_FILE , sync_period ,
540+ syncer_args = (logger , uri , OPENGROK_CONFIG_FILE ,
526541 extra_indexer_options )
527542
528543 logger .debug ("Starting sync thread" )
529544 sync_thread = threading .Thread (target = worker_function , name = "Sync thread" ,
530545 args = syncer_args , daemon = True )
531546 sync_thread .start ()
532547
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 )
548550
549551 # Start Tomcat last. It will be the foreground process.
550552 logger .info ("Starting Tomcat" )
0 commit comments