Megatest

Check-in [19bab1edb4]
Login
Overview
Comment:fixed logic bug preventing sync in some circumstances
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v1.64
Files: files | file ages | folders
SHA1: 19bab1edb42dbf2852a82b93edcb04d739cec7c5
User & Date: bjbarcla on 2017-07-17 16:57:02
Other Links: branch diff | manifest | tags
Context
2017-07-17
16:57
bumped version check-in: 9a0b4410d3 user: bjbarcla tags: v1.64, v1.6426
16:57
fixed logic bug preventing sync in some circumstances check-in: 19bab1edb4 user: bjbarcla tags: v1.64
15:57
fixed fork check-in: cee0c64e14 user: bjbarcla tags: v1.64
Changes

Modified server.scm from [15900e8fbf] to [af3a7f7873].

451
452
453
454
455
456
457

458
459
460
461
462
463
464
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465







+







	60)))

;; moving this here as it needs access to db and cannot be in common.
;;
(define (server:writable-watchdog dbstruct)
  (thread-sleep! 0.05) ;; delay for startup
  (let ((legacy-sync  (common:run-sync?))
        (sync-stale-seconds (configf:lookup-number *configdat* "server" "sync-stale-seconds" default: 300))
	(debug-mode   (debug:debug-mode 1))
	(last-time    (current-seconds))
	(no-sync-db   (db:open-no-sync-db))
        (sync-duration 0) ;; run time of the sync in milliseconds
        (this-wd-num  (begin (mutex-lock! *wdnum*mutex) (let ((x *wdnum*)) (set! *wdnum* (add1 *wdnum*)) (mutex-unlock! *wdnum*mutex) x))))
    (set! *no-sync-db* no-sync-db) ;; make the no sync db available to api calls
    (debug:print-info 2 *default-log-port* "Periodic sync thread started.")
488
489
490
491
492
493
494

495
496
497

498
499
500
501
502
503
504
489
490
491
492
493
494
495
496
497
498

499
500
501
502
503
504
505
506







+


-
+







		   (last-sync-end    (if (common:file-exists? end-file)
					 (file-modification-time end-file)
					 10))
                   (sync-period      (+ 3 (* cpu-load-adj 30))) ;; as adjusted load increases increase the sync period
		   (recently-synced  (and (< (- start-time mt-mod-time) sync-period) ;; not useful if sync didn't modify megatest.db!
					  (< mt-mod-time last-sync-start)))
		   (sync-done        (<= last-sync-start last-sync-end))
                   (sync-stale       (> start-time (+ last-sync-start sync-stale-seconds)))
		   (will-sync        (and (not *time-to-exit*)       ;; do not start a sync if we are in the process of exiting
                                          (or need-sync should-sync)
					  sync-done
					  (or sync-done sync-stale)
					  (not sync-in-progress)
					  (not recently-synced))))
              (debug:print-info 13 *default-log-port* "WD writable-watchdog top of loop.  need-sync="need-sync" sync-in-progress=" sync-in-progress
				" should-sync="should-sync" start-time="start-time" mt-mod-time="mt-mod-time" recently-synced="recently-synced" will-sync="will-sync
				" sync-done=" sync-done " sync-period=" sync-period)
              (if (and (> sync-period 5)
                       (common:low-noise-print 30 "sync-period"))