[Cloudflare] instrumentWorkflowWithSentry does not capture a NonRetryableError thrown before the final attempt
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 78/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- backend-api-design
Direção de pesquisa
Comece lendo instrumentWorkflowWithSentry e WrappedWorkflowStep.do, especialmente instrumentedCallback, em que a captura atualmente depende da quantidade de tentativas. Confira os testes existentes de instrumentação de workflows do Cloudflare e adicione cobertura para um NonRetryableError lançado antes da última tentativa de repetição. A tarefa estará concluída quando essa falha produzir um evento do Sentry e o comportamento após esgotar as tentativas continuar coberto.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Is there an existing issue for this?
- I have checked for existing issues https://github.com/getsentry/sentry-javascript/issues
- I have reviewed the documentation https://docs.sentry.io/
- I am using the latest SDK release https://github.com/getsentry/sentry-javascript/releases
Related: #17421, #21025
How do you use Sentry?
Sentry Saas (sentry.io)
Which SDK are you using?
@sentry/cloudflare
SDK Version
11.9.0 (the code is the same in 11.10.0 and on develop)
Framework Version
wrangler 4.98.0, compatibility_date 2025-06-04
Reproduction Example/SDK Setup
import { WorkflowEntrypoint } from 'cloudflare:workers'
import { NonRetryableError } from 'cloudflare:workflows'
import * as Sentry from '@sentry/cloudflare'
class MyWorkflow extends WorkflowEntrypoint<Env, Params> {
async run(event, step) {
await step.do('load', { retries: { limit: 2, delay: '1 second' } }, async () => {
throw new NonRetryableError('permanent failure')
})
}
}
export const Instrumented = Sentry.instrumentWorkflowWithSentry(
(env) => ({ dsn: env.SENTRY_DSN }),
MyWorkflow,
)
Steps to Reproduce
- Wrap a Workflow with
instrumentWorkflowWithSentry. - Throw a
NonRetryableErrorin astep.dowithretries.limit > 0. - Trigger an instance.
Expected Result
One Sentry event for the NonRetryableError that ends the instance.
Actual Result
No event. WrappedWorkflowStep.do only captures when attempt > retries.limit, and a NonRetryableError ends the instance on attempt 1. Regression since 10.56.0 (#21025): before, the step error was captured on every attempt, so it was reported.
Additional Context
#17421 asked for one error "once all step.do retries have been exhausted, or on a NonRetryableError". #21025 covered only the first case.
Suggested fix: in instrumentedCallback, also capture when error.name === 'NonRetryableError'. I'm happy to open a PR with integration tests.
- Linguagem predominante
- TypeScript
- Estrelas
- 8.8k
- Forks
- 1.9k
- Merge médio
- 1d 20h
- PRs com merge (30d)
- 682
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de getsentry/sentry-javascript
-
Workers AI integration drops output of non-streaming chat responses in the OpenAI format (`choices`)AbertaBug Cloudflare Workers Spans
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
getsentry/sentry-javascript#26120 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Vercel AI: `gen_ai.system_instructions` is missing when the system prompt is a message objectTalvez já em andamento @biggdawg320 assumiu há 1 dia. AbertaBug Package: node Spans vercel ai
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 73/100
getsentry/sentry-javascript#26079 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
fsIntegration crashes in native ESM when patching the read-only fs namespaceTalvez já em andamento @chargome assumiu há 1 dia. AbertaBug Node.js Waiting for: Product Owner
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
getsentry/sentry-javascript#25950 · 2 comentários · 1 responsável ·
Mantenedores costumam responder em até 1 dia
-
normalize() throws when a getter throws a Symbol or a null-prototype objectTalvez já em andamento @rjmcgee53192 assumiu há 5 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
getsentry/sentry-javascript#25920 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Only create Nuxt database and storage spans when there is a parent spanTalvez já em andamento @nicohrubec assumiu há 6 dias. AbertaImprovement Nuxt
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 83/100
getsentry/sentry-javascript#25805 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de getsentry/sentry-javascript
Issues semelhantes
-
[Text] Add Reading Time & Word Count Estimator for Reflection Notes in src/lib/text/reading-time.tsAbertaarea:core beginner-friendly community contributions-welcome difficulty:easy enhancement good first issue
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
Mantenedores costumam responder em até 1 dia
-
[fullsend] E2E: scorecard — filecheck GitLab entity metrics unavailable due to initialDelay timingAbertae2e-failure ready-to-code
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
redhat-developer/rhdh-plugin-export-overlays#4698 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 88/100
devswha/herdr-web-ui#2884 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
b:minor bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
software-mansion/argent#1771 ·
Mantenedores costumam responder em até 1 dia