From 4d168ddefccb7e45ee6bdc1f0d44f5c404283542 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 14 Oct 2022 15:15:32 -0300 Subject: [PATCH 1/4] metrics: declare invalid json request --- internal/metrics/metrics.go | 3 +++ server/peer/server.go | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index 11da2b7..4a7fe95 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -86,6 +86,7 @@ const ( errUnexpectedEOFStr = "unexpected_eof_str" errJSONSyntax = "json_syntax" errBlobTooBig = "blob_too_big" + errInvalidPeerJSON = "invalid_peer_json" errInvalidPeerData = "invalid_peer_data" errDeadlineExceeded = "deadline_exceeded" errHashMismatch = "hash_mismatch" @@ -297,6 +298,8 @@ func TrackError(direction string, e error) (shouldLog bool) { // shouldLog is a } else if strings.Contains(err.Error(), "blob must be at most") { //log.Warnln("blob must be at most X bytes is not the same as ErrBlobTooBig") errType = errBlobTooBig + } else if strings.Contains(err.Error(), "invalid json request") { + errType = errInvalidPeerJSON } else if strings.Contains(err.Error(), "Invalid data") { errType = errInvalidPeerData } else if strings.Contains(err.Error(), "hash of received blob data does not match hash from send request") { diff --git a/server/peer/server.go b/server/peer/server.go index 72ab04a..52c4a80 100644 --- a/server/peer/server.go +++ b/server/peer/server.go @@ -227,7 +227,7 @@ func (s *Server) handleCompositeRequest(data []byte) ([]byte, error) { if err != nil { var je *json.SyntaxError if ee.As(err, &je) { - return nil, errors.Err("invalid json at offset %d in data %s", je.Offset, hex.EncodeToString(data)) + return nil, errors.Err("invalid json request: offset %d in data %s", je.Offset, hex.EncodeToString(data)) } return nil, errors.Err(err) } From 7f756028414e8dee450140f6ce3d86d3828d908b Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 14 Oct 2022 15:16:54 -0300 Subject: [PATCH 2/4] metrics: declare protected blob --- internal/metrics/metrics.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index 4a7fe95..fd3a83e 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -90,6 +90,7 @@ const ( errInvalidPeerData = "invalid_peer_data" errDeadlineExceeded = "deadline_exceeded" errHashMismatch = "hash_mismatch" + errProtectedBlob = "protected_blob" errZeroByteBlob = "zero_byte_blob" errInvalidCharacter = "invalid_character" errBlobNotFound = "blob_not_found" @@ -306,6 +307,8 @@ func TrackError(direction string, e error) (shouldLog bool) { // shouldLog is a errType = errHashMismatch } else if strings.Contains(err.Error(), "blob not found") { errType = errBlobNotFound + } else if strings.Contains(err.Error(), "requested blob is protected") { + errType = errProtectedBlob } else if strings.Contains(err.Error(), "0-byte blob received") { errType = errZeroByteBlob } else if strings.Contains(err.Error(), "PROTOCOL_VIOLATION: tried to retire connection") { From 08ed3c9f13aaff2eabe242d8f167473df7156e01 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 14 Oct 2022 15:18:46 -0300 Subject: [PATCH 3/4] metrics: declare invalid blob hash len --- internal/metrics/metrics.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index fd3a83e..cf2d558 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -91,6 +91,7 @@ const ( errDeadlineExceeded = "deadline_exceeded" errHashMismatch = "hash_mismatch" errProtectedBlob = "protected_blob" + errInvalidBlobHash = "invalid_blob_hash" errZeroByteBlob = "zero_byte_blob" errInvalidCharacter = "invalid_character" errBlobNotFound = "blob_not_found" @@ -303,6 +304,8 @@ func TrackError(direction string, e error) (shouldLog bool) { // shouldLog is a errType = errInvalidPeerJSON } else if strings.Contains(err.Error(), "Invalid data") { errType = errInvalidPeerData + } else if strings.Contains(err.Error(), "Invalid blob hash length") { + errType = errInvalidBlobHash } else if strings.Contains(err.Error(), "hash of received blob data does not match hash from send request") { errType = errHashMismatch } else if strings.Contains(err.Error(), "blob not found") { From 6c082993cf8fb898453396d52d360514ad7ef290 Mon Sep 17 00:00:00 2001 From: Victor Shyba Date: Fri, 14 Oct 2022 15:21:06 -0300 Subject: [PATCH 4/4] metrics: declare request is too large --- internal/metrics/metrics.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index cf2d558..f1c99ee 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -88,6 +88,7 @@ const ( errBlobTooBig = "blob_too_big" errInvalidPeerJSON = "invalid_peer_json" errInvalidPeerData = "invalid_peer_data" + errRequestTooLarge = "request_too_large" errDeadlineExceeded = "deadline_exceeded" errHashMismatch = "hash_mismatch" errProtectedBlob = "protected_blob" @@ -304,6 +305,8 @@ func TrackError(direction string, e error) (shouldLog bool) { // shouldLog is a errType = errInvalidPeerJSON } else if strings.Contains(err.Error(), "Invalid data") { errType = errInvalidPeerData + } else if strings.Contains(err.Error(), "request is too large") { + errType = errRequestTooLarge } else if strings.Contains(err.Error(), "Invalid blob hash length") { errType = errInvalidBlobHash } else if strings.Contains(err.Error(), "hash of received blob data does not match hash from send request") {