Megatest

Check-in [5e7e64a893]
Login
Overview
Comment:Fixed sync back
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v1.80-tcp-inmem
Files: files | file ages | folders
SHA1: 5e7e64a893615669d0cedc490bd0662e5cccece4
User & Date: matt on 2023-02-21 17:47:48
Other Links: branch diff | manifest | tags
Context
2023-02-21
17:58
Switching default to tcp/inmem on build check-in: 2b61f8385c user: matt tags: v1.80-tcp-inmem
17:47
Fixed sync back check-in: 5e7e64a893 user: matt tags: v1.80-tcp-inmem
17:02
merged fork check-in: d8fae05b29 user: matt tags: v1.80-tcp-inmem
Changes

Modified tcp-transportmod.scm from [0a6f894ec9] to [0ff5eb9c1f].

336
337
338
339
340
341
342
343

344
345
346
347
348
349
350
351

352
353
354
355

356
357
358
359
360
361
362
336
337
338
339
340
341
342

343
344
345
346
347




348


349
350
351
352
353
354
355
356
357
358







-
+




-
-
-
-
+
-
-


+







  ;; listener socket has been started by this stage
  ;; wait for a port before creating the registration file
  ;;
  (let* ((cleanup (lambda ()
		    (if (tt-cleanup-proc ttdat)
			((tt-cleanup-proc ttdat))))))
    (let loop ((count 0))
      (if (> count 60)
      (if (> count 240)
	  (begin
	    (debug:print 0 *default-log-port* "FATAL: Could not start a tcp server, giving up.")
	    (exit 1))
	  (if (not (tt-port ttdat)) ;; no connection yet
	      (let* ((last-update (dbr:dbstruct-last-update dbstruct))
		     (curr-secs   (current-seconds)))
		(if (> (- curr-secs last-update) 3) ;; every 3-4 seconds update the db? maybe this should be refresh the inmem?
		    (begin
	      (begin
		      ((dbr:dbstruct-sync-proc dbstruct) last-update)
		      (dbr:dbstruct-last-update-set! dbstruct curr-secs)))
		(thread-sleep! 0.25)
		(loop (+ count 1))))))
    
    ;; load or reload the data into inmem db before
    ;; ((dbr:dbstruct-sync-proc dbstruct) (dbr:dbstruct-last-update dbstruct))
    ;; (dbr:dbstruct-last-update-set! dbstruct (- (current-seconds) 1))
    (tt:create-server-registration-file ttdat dbfname)
    ;; now start watching the last-access, if it hasn't been touched
    ;; in over ten seconds we exit
    (thread-sleep! 0.05) ;; any real need for delay here?
389
390
391
392
393
394
395
396








397
398
399
400
401
402


403
404
405
406
407
408
409
385
386
387
388
389
390
391

392
393
394
395
396
397
398
399
400
401
402
403


404
405
406
407
408
409
410
411
412







-
+
+
+
+
+
+
+
+




-
-
+
+







	(if ok
	    ;; (if (> *api-process-request-count* 0) ;; have requests in flight
	    ;;	(tt-last-access-set! ttdat (current-seconds)))
	    (tt-last-access-set! ttdat *db-last-access*) ;; bit silly, just use db-last-access
	    (begin
	      (cleanup)
	      (exit)))
	

	(let* ((last-update (dbr:dbstruct-last-update dbstruct))
	       (curr-secs   (current-seconds)))
	  (if (> (- curr-secs last-update) 3) ;; every 3-4 seconds update the db? maybe this should be refresh the inmem?
	      (begin
		((dbr:dbstruct-sync-proc dbstruct) last-update)
		(dbr:dbstruct-last-update-set! dbstruct curr-secs))))
	  
	(if (< (- (current-seconds) (tt-last-access ttdat)) 60)
	    (begin
	      (thread-sleep! 5)
	      (loop)))))
	(cleanup)
	(debug:print 0 *default-log-port* "INFO: Server timed out, exiting.")))
    (cleanup)
    (debug:print 0 *default-log-port* "INFO: Server timed out, exiting.")))

  
;; ;; given an already set up uconn start the cmd-loop
;; ;;
;; (define (tt:cmd-loop ttdat)
;;   (let* ((serv-listener (-socket uconn))
;; 	 (listener      (lambda ()