SCB-1059 Bug fixes (#540)
diff --git a/pkg/log/logrotate.go b/pkg/log/logrotate.go
index 3bc9571..bf7e906 100644
--- a/pkg/log/logrotate.go
+++ b/pkg/log/logrotate.go
@@ -284,7 +284,8 @@
return err
}
defer file.Close()
- dest, err := os.Create(destFile)
+
+ dest, err := os.OpenFile(destFile, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600)
if err != nil {
return err
}
diff --git a/scctl/pkg/cmd/cmd.go b/scctl/pkg/cmd/cmd.go
index dd56006..4de89dd 100644
--- a/scctl/pkg/cmd/cmd.go
+++ b/scctl/pkg/cmd/cmd.go
@@ -41,7 +41,9 @@
rootCmd.PersistentFlags().BoolP("verbose", "v", false, "make the operation more talkative")
rootCmd.PersistentPreRun = func(cmd *cobra.Command, args []string) {
if v, _ := cmd.Flags().GetBool("verbose"); v {
- os.Setenv("DEBUG_MODE", "1")
+ if err := os.Setenv("DEBUG_MODE", "1"); err != nil {
+ StopAndExit(ExitError, err)
+ }
}
if d, err := time.ParseDuration(timeout); err == nil && d > 0 {
ScClientConfig.RequestTimeout = d
diff --git a/scctl/pkg/cmd/help.go b/scctl/pkg/cmd/help.go
index 7efbbfc..d36df6a 100644
--- a/scctl/pkg/cmd/help.go
+++ b/scctl/pkg/cmd/help.go
@@ -145,7 +145,7 @@
func UsageFunc(cmd *cobra.Command) error {
subCommands := getSubCommands(cmd)
tabOut := getTabOutWithWriter(os.Stdout)
- commandUsageTemplate.Execute(tabOut, struct {
+ if err := commandUsageTemplate.Execute(tabOut, struct {
Cmd *cobra.Command
LocalFlags string
GlobalFlags string
@@ -157,9 +157,10 @@
toolFlagUsages(cmd.InheritedFlags()),
subCommands,
version.Ver().Version,
- })
- tabOut.Flush()
- return nil
+ }); err != nil {
+ return err
+ }
+ return tabOut.Flush()
}
func getTabOutWithWriter(writer io.Writer) *tabwriter.Writer {
diff --git a/server/broker/controller.go b/server/broker/controller.go
index 1146346..055ad2e 100644
--- a/server/broker/controller.go
+++ b/server/broker/controller.go
@@ -106,6 +106,8 @@
resp, err := BrokerServiceAPI.GetAllProviderPacts(r.Context(), request /*, href*/)
linksObj, err := json.Marshal(resp)
if err != nil {
+ PactLogger.Errorf(err, "invalid ProviderPacts")
+ controller.WriteError(w, scerr.ErrInternal, "Marshal error")
return
}
PactLogger.Infof("Pact info: %s\n", string(linksObj))
diff --git a/server/broker/service.go b/server/broker/service.go
index 80e765a..fb7e637 100644
--- a/server/broker/service.go
+++ b/server/broker/service.go
@@ -699,6 +699,11 @@
verificationDate := time.Now().Format(time.RFC3339)
verificationKey := GenerateBrokerVerificationKey(tenant, pactVersion.Id, lastNumber)
id, err := GetData(ctx, GetBrokerLatestVerificationIDKey())
+ if err != nil {
+ return &brokerpb.PublishVerificationResponse{
+ Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+ }, err
+ }
verification := &brokerpb.Verification{
Id: int32(id) + 1,
Number: lastNumber,
@@ -786,6 +791,11 @@
}
if providerParticipant == nil {
id, err := GetData(ctx, GetBrokerLatestParticipantIDKey())
+ if err != nil {
+ return &brokerpb.PublishPactResponse{
+ Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+ }, err
+ }
providerParticipant = &brokerpb.Participant{Id: int32(id) + 1, AppId: provider.AppId, ServiceName: provider.ServiceName}
response, err := CreateParticipant(PactLogger, ctx, providerParticipantKey, *providerParticipant)
if err != nil {
@@ -804,6 +814,11 @@
}
if consumerParticipant == nil {
id, err := GetData(ctx, GetBrokerLatestParticipantIDKey())
+ if err != nil {
+ return &brokerpb.PublishPactResponse{
+ Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+ }, err
+ }
consumerParticipant = &brokerpb.Participant{Id: int32(id) + 1, AppId: consumer.AppId, ServiceName: consumer.ServiceName}
response, err := CreateParticipant(PactLogger, ctx, consumerParticipantKey, *consumerParticipant)
if err != nil {
@@ -825,6 +840,11 @@
PactLogger.Infof("Old version order: %d", order)
order++
id, err := GetData(ctx, GetBrokerLatestVersionIDKey())
+ if err != nil {
+ return &brokerpb.PublishPactResponse{
+ Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+ }, err
+ }
version = &brokerpb.Version{Id: int32(id) + 1, Number: in.Version, ParticipantId: consumerParticipant.Id, Order: order}
response, err := CreateVersion(PactLogger, ctx, versionKey, *version)
if err != nil {
@@ -845,6 +865,11 @@
}
if pact == nil {
id, err := GetData(ctx, GetBrokerLatestPactIDKey())
+ if err != nil {
+ return &brokerpb.PublishPactResponse{
+ Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+ }, err
+ }
pact = &brokerpb.Pact{Id: int32(id) + 1, ConsumerParticipantId: consumerParticipant.Id,
ProviderParticipantId: providerParticipant.Id, Sha: sha, Content: in.Pact}
response, err := CreatePact(PactLogger, ctx, pactKey, *pact)
@@ -864,6 +889,11 @@
}
if pactVersion == nil {
id, err := GetData(ctx, GetBrokerLatestPactVersionIDKey())
+ if err != nil {
+ return &brokerpb.PublishPactResponse{
+ Response: pb.CreateResponse(scerr.ErrInternal, "get data error."),
+ }, err
+ }
pactVersion = &brokerpb.PactVersion{Id: int32(id) + 1, VersionId: version.Id, PactId: pact.Id, ProviderParticipantId: providerParticipant.Id}
response, err := CreatePactVersion(PactLogger, ctx, pactVersionKey, *pactVersion)
if err != nil {
diff --git a/server/core/backend/defer_instance.go b/server/core/backend/defer_instance.go
index 3dd79e3..ffba31d 100644
--- a/server/core/backend/defer_instance.go
+++ b/server/core/backend/defer_instance.go
@@ -62,7 +62,7 @@
return true
}
-func (iedh *InstanceEventDeferHandler) recoverOrDefer(evt discovery.KvEvent) error {
+func (iedh *InstanceEventDeferHandler) recoverOrDefer(evt discovery.KvEvent) {
kv := evt.KV
key := util.BytesToStringWithNoCopy(kv.Key)
_, ok := iedh.items[key]
@@ -75,7 +75,7 @@
iedh.recover(evt)
case pb.EVT_DELETE:
if ok {
- return nil
+ return
}
instance := kv.Value.(*pb.MicroServiceInstance)
@@ -88,7 +88,6 @@
event: evt,
}
}
- return nil
}
func (iedh *InstanceEventDeferHandler) HandleChan() <-chan discovery.KvEvent {
diff --git a/server/core/backend/registry.go b/server/core/backend/registry.go
index 4534d33..09a88d2 100644
--- a/server/core/backend/registry.go
+++ b/server/core/backend/registry.go
@@ -131,7 +131,9 @@
s.goroutine.Close(true)
ctx, _ := context.WithTimeout(context.Background(), 3*time.Second)
- s.unregisterInstance(ctx)
+ if err := s.unregisterInstance(ctx); err != nil {
+ log.Error("stop registry engine failed", err)
+ }
}
func (s *registryEngine) selfRegister(ctx context.Context) error {
diff --git a/server/notify/websocket.go b/server/notify/websocket.go
index 6eaac0c..16e8d21 100644
--- a/server/notify/websocket.go
+++ b/server/notify/websocket.go
@@ -200,9 +200,14 @@
return
}
+ if err := wh.heartbeat(websocket.PingMessage); err != nil {
+ log.Errorf(err, "send 'Ping' message to watcher[%s] failed, subject: %s, group: %s",
+ remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
+ return
+ }
+
log.Debugf("send 'Ping' message to watcher[%s], subject: %s, group: %s",
remoteAddr, wh.watcher.Subject(), wh.watcher.Group())
- wh.heartbeat(websocket.PingMessage)
return
case *InstanceEvent:
job = o.(*InstanceEvent)
diff --git a/server/server.go b/server/server.go
index d84ee90..72ea40b 100644
--- a/server/server.go
+++ b/server/server.go
@@ -88,7 +88,10 @@
if s.needUpgrade() {
core.ServerInfo.Version = version.Ver().Version
- UpgradeServerVersion()
+ if err := UpgradeServerVersion(); err != nil {
+ log.Errorf(err, "upgrade server version failed")
+ os.Exit(1)
+ }
}
lock.Unlock()
}