diff --git a/main.go b/main.go index fd7290b..83c2caa 100644 --- a/main.go +++ b/main.go @@ -29,7 +29,7 @@ import ( ) const ( - buildVersion = "1.0.18" + buildVersion = "1.0.19" serviceName = "hardlink" customLayout = "2006-01-02 15:04:05 -0700" transactionUrl = "http://127.0.0.1:18181/start-transaction/" @@ -107,67 +107,22 @@ func main() { default: lockConn, err := lockserver.InitializeServerConnection(config.LockserverUrl) if err != nil { - fatalError(err) + fmt.Println(err.Error()) + log.Errorf(err.Error()) + } else { + fmt.Printf("Connected to the lock server successfuly at %s\n", config.LockserverUrl) + log.Infof("Connected to the lock server successfuly at %s", config.LockserverUrl) + lockConn.Close() } - log.Infof("Connectting to lock server at %s", config.LockserverUrl) - lockConn.Close() } if config.IsPayment { - startClient := func() (*exec.Cmd, error) { - cmd := exec.Command("./ChipDNAClient/ChipDnaClient.exe") - err := cmd.Start() - if err != nil { - return nil, fmt.Errorf("failed to start ChipDnaClient: %v", err) - } - log.Infof("ChipDnaClient started with PID %d", cmd.Process.Pid) - return cmd, nil - } - - cmd, err := startClient() - if err != nil { - fatalError(err) - } - - // Restart loop - go func() { - for { - err := cmd.Wait() - if err != nil { - log.Errorf("ChipDnaClient exited unexpectedly: %v", err) - time.Sleep(2 * time.Second) - cmd, err = startClient() - if err != nil { - log.Errorf("Restart failed: %v", err) - return - } - log.Info("ChipDnaClient restarted successfully") - } - } - }() - - // Handle shutdown signals - sigs := make(chan os.Signal, 1) - signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) - go func() { - <-sigs - log.Info("Shutting down...") - if cmd.Process != nil { - log.Info("Sending SIGTERM to ChipDnaClient...") - _ = cmd.Process.Signal(syscall.SIGTERM) - // wait up to 5s for graceful shutdown - done := make(chan error, 1) - go func() { done <- cmd.Wait() }() - select { - case <-time.After(5 * time.Second): - log.Warn("ChipDnaClient did not exit in time, killing...") - _ = cmd.Process.Kill() - case err := <-done: - log.Infof("ChipDnaClient exited cleanly: %v", err) - } - } - os.Exit(0) - }() + fmt.Println("Payment processing is enabled") + log.Info("Payment processing is enabled") + startChipDnaClient() + } else { + fmt.Println("Payment processing is disabled") + log.Info("Payment processing is disabled") } // Create App and wire routes @@ -529,3 +484,60 @@ func readTicketLayout() printer.LayoutOptions { return layout } + +func startChipDnaClient() { + startClient := func() (*exec.Cmd, error) { + cmd := exec.Command("./ChipDNAClient/ChipDnaClient.exe") + err := cmd.Start() + if err != nil { + return nil, fmt.Errorf("failed to start ChipDnaClient: %v", err) + } + log.Infof("ChipDnaClient started with PID %d", cmd.Process.Pid) + return cmd, nil + } + + cmd, err := startClient() + if err != nil { + fatalError(err) + } + + // Restart loop + go func() { + for { + err := cmd.Wait() + if err != nil { + log.Errorf("ChipDnaClient exited unexpectedly: %v", err) + time.Sleep(2 * time.Second) + cmd, err = startClient() + if err != nil { + log.Errorf("Restart failed: %v", err) + return + } + log.Info("ChipDnaClient restarted successfully") + } + } + }() + + // Handle shutdown signals + sigs := make(chan os.Signal, 1) + signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) + go func() { + <-sigs + log.Info("Shutting down...") + if cmd.Process != nil { + log.Info("Sending SIGTERM to ChipDnaClient...") + _ = cmd.Process.Signal(syscall.SIGTERM) + // wait up to 5s for graceful shutdown + done := make(chan error, 1) + go func() { done <- cmd.Wait() }() + select { + case <-time.After(5 * time.Second): + log.Warn("ChipDnaClient did not exit in time, killing...") + _ = cmd.Process.Kill() + case err := <-done: + log.Infof("ChipDnaClient exited cleanly: %v", err) + } + } + os.Exit(0) + }() +} diff --git a/release notes.md b/release notes.md index 49c379b..a0d1cec 100644 --- a/release notes.md +++ b/release notes.md @@ -2,6 +2,9 @@ builtVersion is a const in main.go +#### 1.0.19 - 10 September 2025 +allowed to continue if the connection to the lock server fails at startup + #### 1.0.18 - 04 September 2025 increased timeout for TLJ lock server connection to 30 seconds