@@ -189,24 +189,38 @@ async function initDatabase(): Promise<boolean> {
189189 Logger . otel . endSpan ( span ) ;
190190
191191 if ( Config . auto_hourly_housekeeping ) {
192+ // Every 15 minutes, give and take a few minutes, send out a message to do house keeping, if ready
193+ const randomNum = ( Math . floor ( Math . random ( ) * 100 ) + 1 ) ;
194+ console . log ( "Housekeeping every 15 minutes plus " + randomNum + " seconds" ) ;
192195 housekeeping = setInterval ( async ( ) => {
193- try {
194- var dt = new Date ( new Date ( ) . toISOString ( ) ) ;
195- var msg = new Message ( ) ; msg . jwt = Crypt . rootToken ( ) ;
196- var skipUpdateUsage : boolean = ! ( dt . getHours ( ) == 1 || dt . getHours ( ) == 13 ) ;
197- await msg . Housekeeping ( false , skipUpdateUsage , skipUpdateUsage , null ) ;
198- } catch ( error ) {
196+ if ( Config . enable_openflow_amqp ) {
197+ if ( Config . enable_openflow_amqp ) {
198+ if ( ! Message . ReadyForHousekeeping ( ) ) {
199+ return ;
200+ }
201+ amqpwrapper . Instance ( ) . send ( "openflow" , "" , { "command" : "housekeeping" } , 20000 , null , "" , 1 ) ;
202+ }
203+ } else {
204+ try {
205+ var dt = new Date ( new Date ( ) . toISOString ( ) ) ;
206+ var msg = new Message ( ) ; msg . jwt = Crypt . rootToken ( ) ;
207+ var skipUpdateUsage : boolean = ! ( dt . getHours ( ) == 1 || dt . getHours ( ) == 13 ) ;
208+ await msg . Housekeeping ( false , skipUpdateUsage , skipUpdateUsage , null ) ;
209+ } catch ( error ) {
210+ }
199211 }
200- } , 3600000 ) ;
212+ } , ( 15 * 60 * 1000 ) + ( randomNum * 1000 ) ) ;
213+ // If I'm first and noone else has run it, lets trigger it now
214+ const randomNum2 = ( Math . floor ( Math . random ( ) * 10 ) + 1 ) ;
215+ console . log ( "Trigger first Housekeeping in " + randomNum2 + " seconds" ) ;
201216 setTimeout ( async ( ) => {
202- var dt = new Date ( new Date ( ) . toISOString ( ) ) ;
203- var msg = new Message ( ) ; msg . jwt = Crypt . rootToken ( ) ;
204- var skipUpdateUsage : boolean = ! ( dt . getHours ( ) == 1 || dt . getHours ( ) == 13 ) ;
205- var skipUpdateUserSize : boolean = ! ( dt . getHours ( ) == 1 || dt . getHours ( ) == 13 ) ;
206- if ( Config . housekeeping_update_usage_hourly ) skipUpdateUsage = false ;
207- if ( Config . housekeeping_update_usersize_hourly ) skipUpdateUserSize = false ;
208- await msg . Housekeeping ( false , skipUpdateUsage , skipUpdateUserSize , null ) ;
209- } , 5000 ) ;
217+ if ( Config . enable_openflow_amqp ) {
218+ if ( ! Message . ReadyForHousekeeping ( ) ) {
219+ return ;
220+ }
221+ amqpwrapper . Instance ( ) . send ( "openflow" , "" , { "command" : "housekeeping" } , 20000 , null , "" , 1 ) ;
222+ }
223+ } , randomNum2 * 1000 ) ;
210224 }
211225 return true ;
212226 } catch ( error ) {
0 commit comments