From d4d93f9be627b5407922ef1667eec0810fa7bf7d Mon Sep 17 00:00:00 2001 From: Daisuke MAKIUCHI Date: Wed, 15 Jul 2026 16:42:06 +0900 Subject: [PATCH] =?UTF-8?q?wsnet2-tool:=20server/hub=E3=81=AEheartbeat?= =?UTF-8?q?=E3=81=8Cnull=E3=81=AE=E5=A0=B4=E5=90=88=E5=8B=95=E3=81=8B?= =?UTF-8?q?=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F=E3=81=AE=E3=82=92=E4=BF=AE?= =?UTF-8?q?=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit server/hubの起動直後はnullになっているので、そのタイミングでselectするとエラーになっていた --- server/cmd/wsnet2-tool/cmd/servers.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/server/cmd/wsnet2-tool/cmd/servers.go b/server/cmd/wsnet2-tool/cmd/servers.go index e338d48..95cca4c 100644 --- a/server/cmd/wsnet2-tool/cmd/servers.go +++ b/server/cmd/wsnet2-tool/cmd/servers.go @@ -1,6 +1,7 @@ package cmd import ( + "database/sql" "os" "time" @@ -16,13 +17,13 @@ var ( ) type server struct { - Id int `db:"id"` - HostName string `db:"hostname"` - PublicName string `db:"public_name"` - GRPCPort int `db:"grpc_port"` - WebSocketPort int `db:"ws_port"` - Status int `db:"status"` - HeartBeat int64 `db:"heartbeat"` + Id int `db:"id"` + HostName string `db:"hostname"` + PublicName string `db:"public_name"` + GRPCPort int `db:"grpc_port"` + WebSocketPort int `db:"ws_port"` + Status int `db:"status"` + HeartBeat sql.Null[int64] `db:"heartbeat"` } // serversCmd represents the servers command @@ -77,7 +78,7 @@ func printServersHeader(cmd *cobra.Command) { func printServer(cmd *cobra.Command, typ string, s server) { st := serverStatusStr[s.Status] - hb := time.Unix(s.HeartBeat, 0) + hb := time.Unix(s.HeartBeat.V, 0) ok := "Available" if !s.Available() { if !serversAll { @@ -92,5 +93,5 @@ func printServer(cmd *cobra.Command, typ string, s server) { func (s *server) Available() bool { v := time.Now().Add(-time.Duration(conf.Lobby.ValidHeartBeat)).Unix() - return v < s.HeartBeat + return v < s.HeartBeat.V }