Megatest

Check-in [7f7a2e36c5]
Login
Overview
Comment:wip
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | v2.0001-configurable-transport
Files: files | file ages | folders
SHA1: 7f7a2e36c53c19006d2e92a4ca91ce3e899793d1
User & Date: matt on 2022-01-17 16:42:13
Other Links: branch diff | manifest | tags
Context
2022-01-17
18:07
wip, ulex-simple server starts for main.db check-in: 5a981df3db user: matt tags: v2.0001-configurable-transport
16:42
wip check-in: 7f7a2e36c5 user: matt tags: v2.0001-configurable-transport
16:07
wip check-in: b7b88f7d43 user: matt tags: v2.0001-configurable-transport
Changes

Modified ulex-simple/dbmgr.scm from [baa038b013] to [156c31ac88].

628
629
630
631
632
633
634











635
636
637
638
639
640
641



642
643
644
645
646
647
648
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651

652
653
654
655
656
657
658
659
660
661







+
+
+
+
+
+
+
+
+
+
+






-
+
+
+







		  (loop (cdr tail) new-best)))))))
	  

;;======================================================================
;; END NEW SERVER METHOD
;;======================================================================

;; sdat must be defined and the host and port set and the same as previous
;;
(define (host-port-is-stable? sdat old-host old-port)
  (and sdat
       (let ((new-host (servdat-host sdat))
	     (new-port (servdat-port sdat)))
	 (and new-host
	      new-port
	      (equal? new-host old-host)
	      (equal? new-port old-port)))))

;; if .db/main.db check the pkts
;; 
(define (rmt:wait-for-server pkts-dir db-file server-key)
  (let* ((sdat *db-serv-info*))
    (let loop ((start-time (current-seconds))
	       (changed    #t)
	       (last-sdat  "not this"))
	       (last-sdat  "not this")
	       (last-host  #f)
	       (last-port  #f))
      (begin ;; let ((sdat #f))
	(thread-sleep! 0.01)
	(debug:print-info 0 *default-log-port* "Waiting for server alive signature")
	(mutex-lock! *heartbeat-mutex*)
	(set! sdat *db-serv-info*)
	(mutex-unlock! *heartbeat-mutex*)
	(if (and sdat
698
699
700
701
702
703
704
705

706
707
708
709
710
711
712




713
714
715
716
717
718
719
711
712
713
714
715
716
717

718
719
720
721
722
723


724
725
726
727
728
729
730
731
732
733
734







-
+





-
-
+
+
+
+







		      (bdat-time-to-exit-set! *bdat* #t)
		      (delete-pkt)
		      (thread-sleep! 0.2)
		      (exit)))
		sdat))
	    (begin ;; sdat not yet contains server info
	      (debug:print-info 0 *default-log-port* "Still waiting, last-sdat=" last-sdat)
	      (thread-sleep! 4)
	      (thread-sleep! 0.1)
	      (if (> (- (current-seconds) start-time) 120) ;; been waiting for two minutes
		  (begin
		    (debug:print-error 0 *default-log-port* "transport appears to have died, exiting server")
		    (exit))
		  (loop start-time
			(equal? sdat last-sdat)
			sdat))))))))
			(not (host-port-is-stable? sdat last-host last-port))
			sdat
			(servdat-host sdat)
			(servdat-port sdat)))))))))

(define (rmt:register-server sinfo apath iface port server-key dbname)
  (servdat-conns sinfo) ;; just checking types
  (rmt:open-main-connection sinfo apath) ;; we need a channel to main.db
  (rmt:send-receive sinfo apath      ;; params: host port servkey pid ipaddr dbpath
			 (db:run-id->dbname #f)
			 'register-server `(,iface