Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug][pyroscope] Pyroscope does not ingest Speedscope files with multiple profiles #3989

Open
lagutrop opened this issue Mar 11, 2025 · 1 comment

Comments

@lagutrop
Copy link

Describe the bug

I've been using Pyroscope version 0.37.2 for a couple of months and decided to upgrade to the new version of Pyroscope (1.12). In the above version it was possible to call the ingest endpoint (POST localhost:4040/ingest?name=MyServiceName&from=1741682023&until=1741682083&format=speedscope) with multiple profiles like the example that you provide in your TestData folder.
Now with the upgrade to 1.12.0, I'm getting the following error

{
    "code": "unknown",
    "message": "invalid_argument: pyroscopeIngesterAdapter failed to convert metadata: unknown profile type: seconds"
}

To Reproduce

Use the last release build 1.12.0 and call the following endpoint in Postman for example

POST localhost:4040/ingest?name=MyServiceName&from=1741682023&until=1741682083&format=speedscope

In body select Raw and insert the following Speedscope

{
  "exporter": "[email protected]",
  "$schema": "https://www.speedscope.app/file-format-schema.json",
  "name": "Two Samples",
  "activeProfileIndex": 1,
  "profiles": [
    {
      "type": "sampled",
      "name": "one",
      "unit": "seconds",
      "startValue": 0,
      "endValue": 14,
      "samples": [
        [0, 1, 2],
        [0, 1, 2],
        [0, 1, 3],
        [0, 1, 2],
        [0, 1]
      ],
      "weights": [1, 1, 4, 3, 5]
    },
    {
      "type": "sampled",
      "name": "two",
      "unit": "seconds",
      "startValue": 0,
      "endValue": 14,
      "samples": [
        [0, 1, 2],
        [0, 1, 2],
        [0, 1, 3],
        [0, 1, 2],
        [0, 1]
      ],
      "weights": [1, 1, 4, 3, 5]
    }
  ],
  "shared": {
    "frames": [
      { "name": "a" },
      { "name": "b" },
      { "name": "c" },
      { "name": "d" }
    ]
  }
}

The following error will appear, with status code 422 Unprocessable Entity.

{
    "code": "unknown",
    "message": "invalid_argument: pyroscopeIngesterAdapter failed to convert metadata: unknown profile type: seconds"
}

Expected behavior

The ingest endpoint should process this speedscope file correctly, since it is one of the files provided in TestData folder (https://github.com/grafana/pyroscope/blob/main/pkg/og/convert/speedscope/testdata/two-sampled.speedscope.json).

Environment

  • Infrastructure: Docker
  • Deployment tool: Docker-compose with image 1.12.0

Additional Context

2025-03-11 08:35:13 ts=2025-03-11T08:35:13.851202454Z caller=http.go:285 level=warn traceID=6804a615f0d03319 msg="POST /ingest?name=Postman1&from=1741682023&until=1741682083&format=speedscope (422) 841.156µs Response: "{\"code\":\"unknown\",\"message\":\"invalid_argument: pyroscopeIngesterAdapter failed to convert metadata: unknown profile type: seconds\"}\n" ws: false; Accept: /; Accept-Encoding: gzip, deflate, br; Connection: keep-alive; Content-Length: 914; Content-Type: application/json; Postman-Token: 7c16899e-266b-436f-9696-2b7ce78ab190; User-Agent: PostmanRuntime/7.43.0; "

@korniltsev
Copy link
Collaborator

Thanks for reporting.

I think this is a bug introduced during go Pyroscope <-> phlare merging in the ingest adapter. I will take a look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants