Skip to content

[Bug]: Errors during telemetry data flush - broken pipe #2915

@kn0x1c

Description

@kn0x1c

Bug report

Hello,

I am using a currently not supported integration of your tracer. But it worked fine for the last versions.

My integration:
AWS Lambda with Vapor
PHP 8.2
Laravel 10.x

My issue is, that starting from tracer version 1.4.0 I get the following error:

NOTICE: PHP message: [ddtrace] [error] Failed signaling lifecycle end: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
NOTICE: PHP message: [ddtrace] [error] Failed flushing service data: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
NOTICE: PHP message: [ddtrace] [error] Failed flushing telemetry buffer: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }
NOTICE: PHP message: [ddtrace] [error] Failed sending traces to the sidecar: Os { code: 32, kind: BrokenPipe, message: "Broken pipe" }

Fun part is, that it still sends data, metrics traces etc. all are appearing in the UI

I took a couple of hours and debugged it a little bit, I tried the following:
Upgrading / Downgrading the AWS Lambda layer to: v60-alpine and v65-alpine
Upgrading PHP from 8.2 to 8.3
Upgrading / Downgrading the tracer to: v1.0.0, v1.3.0, v1.3.2, v1.4.0, v1.4.2

As far for now I was able to tackle it down, that the issue is only present in all version of the tracer starting from v1.4.0 (v1.4.X) and it doesn't matter if it's PHP 8.2/8.3 and also which AWS Lambda layer (agent) version I am using.

I reviewed the changes and saw, that you switched to sidecar trace sender (I assume also for trace metrics) in v1.4.0 (tracer) but only for PHP 8.3. However I also get the issue in 8.2 so I am not sure if that is the problem, but I would explain a lot.

Also it seems like the application is MUCH slower, 2-3x.

Latest working configuration:
PHP: 8.2/8.3
AWS Lambda Layer: v65-alpine

Question
Is there something I can do, for example enable something in the agent (aws lambda layer), for example socket based communication etc. something like that, so I can get the new tracer running in lambda.
I know you are not supporting it yet, but it worked flawlessly in previous versions and we love using datadog and even rolled the AWS Lambda integration we build out to production, with no issues!

Tech Stuff
Dockerfile (not working using tracer 1.4.0)

FROM laravelphp/vapor:php82

# Add DataDog APM tracer
RUN apk add tar gzip libgcc \
&&  curl -LO --retry 3 https://github.com/DataDog/dd-trace-php/releases/download/1.4.0/datadog-setup.php \
&&  ln -s /sbin/ldconfig /usr/local/bin/ldconfig \
&&  php datadog-setup.php --php-bin=all \
&&  rm -f datadog-setup.php

# Load datadog agent layer
COPY --from=public.ecr.aws/datadog/lambda-extension:65-alpine /opt/. /opt/

COPY . /var/task

PHP version

8.2

Tracer or profiler version

1.4.0

Installed extensions

No response

Output of phpinfo()

No response

Upgrading from

Tracer 1.3.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    🐛 bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions