Skip to content

Commit 44910d1

Browse files
committed
Handle a bunch of unhandled errors
1 parent 6a9a18c commit 44910d1

File tree

17 files changed

+135
-31
lines changed

17 files changed

+135
-31
lines changed

apricot/local/local_test.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,21 @@ var _ = BeforeSuite(func() {
3131
for _, configFile := range configFiles {
3232
from, err := os.Open("./" + configFile)
3333
Expect(err).NotTo(HaveOccurred())
34-
defer from.Close()
34+
defer func() {
35+
err := from.Close()
36+
if err != nil {
37+
Expect(err).NotTo(HaveOccurred())
38+
}
39+
}()
3540

3641
to, err := os.OpenFile(*tmpDir+"/"+configFile, os.O_RDWR|os.O_CREATE, 0666)
3742
Expect(err).NotTo(HaveOccurred())
38-
defer to.Close()
43+
defer func() {
44+
err := to.Close()
45+
if err != nil {
46+
Expect(err).NotTo(HaveOccurred())
47+
}
48+
}()
3949

4050
_, err = io.Copy(to, from)
4151
Expect(err).NotTo(HaveOccurred())
@@ -45,5 +55,6 @@ var _ = BeforeSuite(func() {
4555
})
4656

4757
var _ = AfterSuite(func() {
48-
os.RemoveAll(*tmpDir)
58+
err := os.RemoveAll(*tmpDir)
59+
Expect(err).NotTo(HaveOccurred())
4960
})

apricot/local/service.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,10 @@ func (s *Service) GetCRUCardsForHost(hostname string) ([]string, error) {
508508
if err != nil {
509509
return nil, err
510510
}
511-
json.Unmarshal([]byte(cfgCards), &cards)
511+
err = json.Unmarshal([]byte(cfgCards), &cards)
512+
if err != nil {
513+
return nil, err
514+
}
512515
unique := make(map[string]bool)
513516
for _, card := range cards {
514517
if _, value := unique[card.Serial]; !value {

apricot/local/service_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,12 @@ var _ = Describe("local service", func() {
461461
Expect(err).To(HaveOccurred())
462462
})
463463
})
464+
When("retrieving the CRU cards for an FLP with invalid \"cards\" JSON", func() {
465+
It("should produce an error", func() {
466+
cards, err = svc.GetCRUCardsForHost("flp500")
467+
Expect(err).To(HaveOccurred())
468+
})
469+
})
464470
})
465471
Describe("getting endpoints for a CRU card", func() {
466472
var (

apricot/local/service_test.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -192,4 +192,6 @@ o2:
192192
flp003:
193193
cards: "{ \"key\" : \"value\" }"
194194
flp100:
195-
cards: "{ \"key\" : \"value\" }"
195+
cards: "{ \"key\" : \"value\" }"
196+
flp500:
197+
cards: "invalid json{"

apricot/local/servicehttp.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -615,21 +615,42 @@ func (httpsvc *HttpService) ApiPrintClusterInformation(w http.ResponseWriter, r
615615
log.WithError(err).Warn("Error, could not marshal inventory.")
616616
}
617617
}
618-
fmt.Fprintln(w, string(result))
618+
_, err = fmt.Fprintln(w, string(result))
619+
if err != nil {
620+
log.WithField("result", string(result)).
621+
WithField(infologger.Level, infologger.IL_Support).
622+
WithError(err).
623+
Warn("Error, could not write a part of HTTP response to response writer.")
624+
}
619625
case "text":
620626
fallthrough
621627
default:
622628
w.Header().Set("Content-Type", "text/plain")
623629
w.WriteHeader(http.StatusOK)
624630
if hosts != nil {
625631
for _, hostname := range hosts {
626-
fmt.Fprintf(w, "%s\n", hostname)
632+
_, err := fmt.Fprintf(w, "%s\n", hostname)
633+
if err != nil {
634+
log.WithField(infologger.Level, infologger.IL_Support).
635+
WithError(err).
636+
Warn("Error, could not write a part of HTTP response to response writer.")
637+
}
627638
}
628639
} else if inventory != nil {
629640
for detector, flps := range inventory {
630-
fmt.Fprintf(w, "%s\n", detector)
641+
_, err := fmt.Fprintf(w, "%s\n", detector)
642+
if err != nil {
643+
log.WithField(infologger.Level, infologger.IL_Support).
644+
WithError(err).
645+
Warn("Error, could not write a part of HTTP response to response writer.")
646+
}
631647
for _, hostname := range flps {
632-
fmt.Fprintf(w, "\t%s\n", hostname)
648+
_, err = fmt.Fprintf(w, "\t%s\n", hostname)
649+
if err != nil {
650+
log.WithField(infologger.Level, infologger.IL_Support).
651+
WithError(err).
652+
Warn("Error, could not write a part of HTTP response to response writer.")
653+
}
633654
}
634655
}
635656
}

common/event/writer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,11 @@ func (w *KafkaWriter) Close() {
133133
w.runningWorkers.Add(2)
134134
close(w.toBatchMessagesChan)
135135
w.runningWorkers.Wait()
136-
w.Writer.Close()
136+
err := w.Writer.Close()
137+
if err != nil {
138+
log.WithField(infologger.Level, infologger.IL_Devel).
139+
Errorf("failed to close writer: %v", err)
140+
}
137141
}
138142
}
139143

common/event/writer_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ var _ = Describe("Writer", func() {
4949
writer.writeFunction = func(messages []kafka.Message) {
5050
Expect(len(messages)).To(Equal(1))
5151
event := &pb.Event{}
52-
proto.Unmarshal(messages[0].Value, event)
52+
err := proto.Unmarshal(messages[0].Value, event)
53+
Expect(err).To(BeNil())
5354
Expect(event.GetCoreStartEvent().FrameworkId).To(Equal("FrameworkId"))
5455
channel <- struct{}{}
5556
}

common/monitoring/common.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ type key struct {
3535
}
3636

3737
func metricNameTagsToHash(hash *maphash.Hash, metric *Metric) {
38-
hash.WriteString(metric.name)
38+
_, _ = hash.WriteString(metric.name)
3939

4040
for _, tag := range metric.tags {
41-
hash.WriteString(tag.name)
42-
hash.WriteString(tag.value)
41+
_, _ = hash.WriteString(tag.name)
42+
_, _ = hash.WriteString(tag.value)
4343
}
4444
}
4545

common/monitoring/metricsreservoirsampling.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ func metricFieldToFloat64(field any) float64 {
6666
func (this *MetricsReservoirSampling) AddMetric(metric *Metric) {
6767
for fieldName, field := range metric.fields {
6868
metricNameTagsToHash(&this.hash, metric)
69-
this.hash.WriteString(fieldName)
69+
_, _ = this.hash.WriteString(fieldName)
7070
k := key{nameTagsHash: hashValueAndReset(&this.hash), timestamp: time.Unix(metric.timestamp.Unix(), 0)}
7171
if storedMetric, ok := this.metricsBuckets[k]; !ok {
7272
newReservoir := newReservoirSampling(fieldName, reservoirSize)

common/monitoring/monitoring.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,10 @@ func exportMetricsAndReset(w http.ResponseWriter, r *http.Request) {
120120
if metricsToConvert == nil {
121121
metricsToConvert = make([]Metric, 0)
122122
}
123-
Format(w, metricsToConvert)
123+
err := Format(w, metricsToConvert)
124+
if err != nil {
125+
log.WithField(infologger.Level, infologger.IL_Devel).Errorf("Failed to export metrics: %v", err)
126+
}
124127
}
125128

126129
func Send(metric *Metric) {

0 commit comments

Comments
 (0)