this method is not thread safe and must be externally protected from concurrent executions . concode_field_sep ReentrantLock lock concode_elem_sep RubyBridge rubyBridge concode_elem_sep PlatformDatabaseMigrationExecutorService executorService concode_elem_sep Throwable failureError concode_elem_sep AtomicBoolean running concode_elem_sep Logger LOGGER concode_elem_sep Platform platform concode_elem_sep Date startDate concode_elem_sep Status status concode_field_sep void doUpgradeDb concode_elem_sep void startIt concode_elem_sep void doDatabaseMigration concode_elem_sep Throwable failureError concode_elem_sep Date startedAt concode_elem_sep void doRestartContainer concode_elem_sep void doRecreateWebRoutes concode_elem_sep Status status
void function ( ) { if ( this . running . get ( ) ) { return ; } running . set ( true ) ; executorService . execute ( new Runnable ( ) { @ Override public void run ( ) { doDatabaseMigration ( ) ; } } ) ; }