Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

GraphQL ignored-error-types should not rely only on ErrorClassification.toString()

Đang mở
#6,020 2 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
52/100
Loại issue
Tính năng
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
graphql, java, spring-boot
Lĩnh vực
api, backend

Hướng nghiên cứu

Bắt đầu trong SentryGraphqlInstrumentation và kiểm tra cách error.getErrorType().toString() được so sánh với ignored-error-types. Đọc cách ErrorClassification.toSpecification(...) của graphql-java hoạt động, sau đó xác định phương án matching để có thể bỏ qua ExtendedValidationError mà không thay thế message interpolator hoặc dựa vào toString().

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Feature Java Platform: Java
Problem Statement

I am using the GraphQL integration with:

  • io.sentry:sentry-spring-boot-4
  • io.sentry:sentry-graphql-22
  • Sentry Java SDK 8.42.0
  • com.graphql-java:graphql-java-extended-validation:24.0

I want to ignore expected GraphQL validation errors produced by graphql-java-extended-validation.

The configuration looks like this:

sentry.graphql.ignored-error-types:
  - BAD_REQUEST
  - UNAUTHORIZED
  - FORBIDDEN
  - NOT_FOUND
  - ExtendedValidationError

This works well for enum-like ErrorClassification values, but it does not work reliably for errors from graphql-java-extended-validation.
From what I can see, SentryGraphqlInstrumentation currently resolves the error type with:

error.getErrorType().toString()

and then compares that string with ignoredErrorTypes.
The problem is that graphql-java-extended-validation uses a private ResourceBundleMessageInterpolator.ValidationErrorType class. It does not expose a stable enum-like value via toString(). The semantic classification is exposed through ErrorClassification.toSpecification(...), which returns a map like:

{
  "type": "ExtendedValidationError",
  "validatedPath": [...],
  "constraint": "@..."
}

Because of this, I currently have to work around the issue by replacing the extended-validation MessageInterpolator and returning a custom ErrorClassification whose toString() returns ExtendedValidationError only when called from Sentry:

override fun toString(): String {
    if (stackWalker.callerClass == SentryGraphqlInstrumentation::class.java) {
        return "ExtendedValidationError"
    }

    return super.toString()
}

That workaround is brittle and depends on Sentry internals.
This looks related to #2899, which added easier GraphQL error filtering. The current string-based filtering solves enum-like classifications, but it is hard to use with custom ErrorClassification implementations where toSpecification(...) carries the meaningful classification.

Solution Brainstorm

Could Sentry support a more robust way to classify ignored GraphQL errors?

A few possible approaches:

  1. When error.getErrorType() is present, call errorType.toSpecification(error) and, if it returns a map containing a type field, allow ignored-error-types to match that value.

  2. Add a callback/predicate for GraphQL errors. This would allow applications to inspect GraphQLError, ErrorClassification, extensions, path, etc.

  3. Pass the GraphQLError and/or ErrorClassification through the Sentry Hint, as mentioned in #2899, so users can filter these events in beforeSend without replacing the whole GraphQL instrumentation.

My preference would be option 1 for configuration compatibility, possibly combined with option 3 for advanced filtering.

This would also make the Sentry GraphQL integration work out of the box with graphql-java-extended-validation, which is an official companion library from the graphql-java project. Since Sentry Java already integrates with graphql-java, it would be helpful if expected validation errors from this commonly used library could be ignored without replacing the message interpolator or depending on ErrorClassification.toString().

Ngôn ngữ chính
Kotlin
Star
1.4k
Fork
478
Merge trung bình
2 ngày 20 giờ
Pull request đã merge (30 ngày)
71

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của getsentry/sentry-java

Tất cả issue của getsentry/sentry-java

Issue tương tự

Thêm issue về Kotlin

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.