Skip to content
This repository was archived by the owner on Sep 4, 2022. It is now read-only.

Commit c7c76c7

Browse files
authored
Merge pull request #110 from cisco-open/fix/aiohttp-decode
fix(aiohttp): fixed decode error
2 parents c719db0 + 1650be6 commit c7c76c7

File tree

3 files changed

+158
-396
lines changed

3 files changed

+158
-396
lines changed

cisco_telescope/instrumentations/aiohttp/__init__.py

+12-4
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
limitations under the License.
1515
"""
1616
import asyncio
17+
import logging
1718
import types
1819
from collections import deque
1920

@@ -176,17 +177,24 @@ async def on_request_chunk_sent(
176177
params: aiohttp.TraceRequestChunkSentParams,
177178
):
178179
if getattr(params, "chunk"):
179-
decoded_chunk = params.chunk.decode()
180-
trace_config_ctx.request_body += decoded_chunk
180+
trace_config_ctx.request_body += _decode_chunk(params.chunk)
181181

182182
async def on_responde_chunk_received(
183183
unused_session: aiohttp.ClientSession,
184184
trace_config_ctx: types.SimpleNamespace,
185185
params: aiohttp.TraceRequestChunkSentParams,
186186
):
187187
if getattr(params, "chunk"):
188-
decoded_chunk = params.chunk.decode()
189-
trace_config_ctx.response_body += decoded_chunk
188+
trace_config_ctx.response_body += _decode_chunk(params.chunk)
189+
190+
def _decode_chunk(chunk):
191+
try:
192+
decoded_chunk = chunk.decode()
193+
except UnicodeDecodeError as e:
194+
decoded_chunk = str(chunk)
195+
logging.info(f"Could not decode body chunk: {decoded_chunk}, {e}")
196+
197+
return decoded_chunk
190198

191199
def _trace_config_ctx_factory(**kwargs):
192200
kwargs.setdefault("trace_request_ctx", {})

0 commit comments

Comments
 (0)