You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Based on analysis of the codebase, the Redis EXECABORT error occurs in [`entity.go:292`](internal/models/entity.go:292) when `destination.Credentials.MarshalBinary()` fails during the Redis transaction.
4
+
5
+
## Root Cause
6
+
7
+
The failure path is:
8
+
1. POST request to `/api/v1/{tenant_id}/destinations`
When `json.Marshal()` fails in the Redis transaction, you should see:
83
+
84
+
1.**In Application Logs:**
85
+
- Error from `json.Marshal()` (e.g., "invalid UTF-8 in string")
86
+
- Redis transaction failure
87
+
- 500 Internal Server Error returned to client
88
+
89
+
2.**In Redis Logs:**
90
+
-`EXECABORT` message
91
+
- Transaction rollback
92
+
93
+
3.**Client Response:**
94
+
- HTTP 500 status code
95
+
- Internal server error response
96
+
97
+
## Why These Methods Work
98
+
99
+
-**Invalid UTF-8**: Go's `json.Marshal()` validates UTF-8 and fails on invalid sequences
100
+
-**Control Characters**: Some control chars cannot be marshaled to valid JSON
101
+
-**Oversized Payloads**: May cause memory allocation failures during marshaling
102
+
103
+
The key insight is that since `Credentials` is a `map[string]string`, the marshaling failure must come from the string values themselves being unmarshalable, not from complex object structures.
0 commit comments