allowed to continue if the connection to the lock server fails at startup
This commit is contained in:
parent
efa415e631
commit
da5cafe031
128
main.go
128
main.go
@ -29,7 +29,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
buildVersion = "1.0.18"
|
buildVersion = "1.0.19"
|
||||||
serviceName = "hardlink"
|
serviceName = "hardlink"
|
||||||
customLayout = "2006-01-02 15:04:05 -0700"
|
customLayout = "2006-01-02 15:04:05 -0700"
|
||||||
transactionUrl = "http://127.0.0.1:18181/start-transaction/"
|
transactionUrl = "http://127.0.0.1:18181/start-transaction/"
|
||||||
@ -107,67 +107,22 @@ func main() {
|
|||||||
default:
|
default:
|
||||||
lockConn, err := lockserver.InitializeServerConnection(config.LockserverUrl)
|
lockConn, err := lockserver.InitializeServerConnection(config.LockserverUrl)
|
||||||
if err != nil {
|
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 {
|
if config.IsPayment {
|
||||||
startClient := func() (*exec.Cmd, error) {
|
fmt.Println("Payment processing is enabled")
|
||||||
cmd := exec.Command("./ChipDNAClient/ChipDnaClient.exe")
|
log.Info("Payment processing is enabled")
|
||||||
err := cmd.Start()
|
startChipDnaClient()
|
||||||
if err != nil {
|
} else {
|
||||||
return nil, fmt.Errorf("failed to start ChipDnaClient: %v", err)
|
fmt.Println("Payment processing is disabled")
|
||||||
}
|
log.Info("Payment processing is disabled")
|
||||||
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)
|
|
||||||
}()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create App and wire routes
|
// Create App and wire routes
|
||||||
@ -529,3 +484,60 @@ func readTicketLayout() printer.LayoutOptions {
|
|||||||
|
|
||||||
return layout
|
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)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|||||||
@ -2,6 +2,9 @@
|
|||||||
|
|
||||||
builtVersion is a const in main.go
|
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
|
#### 1.0.18 - 04 September 2025
|
||||||
increased timeout for TLJ lock server connection to 30 seconds
|
increased timeout for TLJ lock server connection to 30 seconds
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user