|
|
@@ -215,6 +215,22 @@ type BrokerConfig struct {
|
|
|
MaxCompartmentIDs int
|
|
|
}
|
|
|
|
|
|
+// BrokerLoggedEvent is an error type which indicates that the broker has
|
|
|
+// already logged an event recording the underlying error. This may be used
|
|
|
+// by the outer server layer to avoid redundant logs for HandleSessionPacket
|
|
|
+// errors.
|
|
|
+type BrokerLoggedEvent struct {
|
|
|
+ err error
|
|
|
+}
|
|
|
+
|
|
|
+func NewBrokerLoggedEvent(err error) *BrokerLoggedEvent {
|
|
|
+ return &BrokerLoggedEvent{err: err}
|
|
|
+}
|
|
|
+
|
|
|
+func (e *BrokerLoggedEvent) Error() string {
|
|
|
+ return e.err.Error()
|
|
|
+}
|
|
|
+
|
|
|
// NewBroker initializes a new Broker.
|
|
|
func NewBroker(config *BrokerConfig) (*Broker, error) {
|
|
|
|
|
|
@@ -609,6 +625,9 @@ func (b *Broker) handleProxyAnnounce(
|
|
|
logFields.Add(transportLogFields)
|
|
|
logFields.Add(matchMetrics.GetMetrics())
|
|
|
b.config.Logger.LogMetric(brokerMetricName, logFields)
|
|
|
+ if retErr != nil {
|
|
|
+ retErr = NewBrokerLoggedEvent(retErr)
|
|
|
+ }
|
|
|
}()
|
|
|
|
|
|
announceRequest, err := UnmarshalProxyAnnounceRequest(requestPayload)
|
|
|
@@ -968,6 +987,9 @@ func (b *Broker) handleClientOffer(
|
|
|
logFields.Add(transportLogFields)
|
|
|
logFields.Add(matchMetrics.GetMetrics())
|
|
|
b.config.Logger.LogMetric(brokerMetricName, logFields)
|
|
|
+ if retErr != nil {
|
|
|
+ retErr = NewBrokerLoggedEvent(retErr)
|
|
|
+ }
|
|
|
}()
|
|
|
|
|
|
offerRequest, err := UnmarshalClientOfferRequest(requestPayload)
|
|
|
@@ -1288,6 +1310,9 @@ func (b *Broker) handleProxyAnswer(
|
|
|
}
|
|
|
logFields.Add(transportLogFields)
|
|
|
b.config.Logger.LogMetric(brokerMetricName, logFields)
|
|
|
+ if retErr != nil {
|
|
|
+ retErr = NewBrokerLoggedEvent(retErr)
|
|
|
+ }
|
|
|
}()
|
|
|
|
|
|
answerRequest, err := UnmarshalProxyAnswerRequest(requestPayload)
|
|
|
@@ -1422,6 +1447,9 @@ func (b *Broker) handleServerProxyQuality(
|
|
|
}
|
|
|
logFields.Add(transportLogFields)
|
|
|
b.config.Logger.LogMetric(brokerMetricName, logFields)
|
|
|
+ if retErr != nil {
|
|
|
+ retErr = NewBrokerLoggedEvent(retErr)
|
|
|
+ }
|
|
|
}()
|
|
|
|
|
|
qualityRequest, err := UnmarshalServerProxyQualityRequest(requestPayload)
|
|
|
@@ -1499,6 +1527,9 @@ func (b *Broker) handleClientRelayedPacket(
|
|
|
}
|
|
|
logFields.Add(transportLogFields)
|
|
|
b.config.Logger.LogMetric(brokerMetricName, logFields)
|
|
|
+ if retErr != nil {
|
|
|
+ retErr = NewBrokerLoggedEvent(retErr)
|
|
|
+ }
|
|
|
}()
|
|
|
|
|
|
relayedPacketRequest, err := UnmarshalClientRelayedPacketRequest(requestPayload)
|