Skip to content

grpc: response-action()#561

Merged
MrAnno merged 3 commits intoaxoflow:mainfrom
alltilla:grpc-response-handling-override
Mar 27, 2025
Merged

grpc: response-action()#561
MrAnno merged 3 commits intoaxoflow:mainfrom
alltilla:grpc-response-handling-override

Conversation

@alltilla
Copy link
Member

With this option, it is possible to fine tune how AxoSyslog behaves in case of different gRPC results.

Supported by the following destination drivers:

  • opentelemetry()
  • loki()
  • bigquery()
  • clickhouse()
  • google-pubsub-grpc()

Supported gRPC results:

  • ok
  • unavailable
  • cancelled
  • deadline-exceeded
  • aborted
  • out-of-range
  • data-loss
  • unknown
  • invalid-argument
  • not-found
  • already-exists
  • permission-denied
  • unauthenticated
  • failed-precondition
  • unimplemented
  • internal
  • resource-exhausted

Supported actions:

  • disconnect
  • drop
  • retry
  • success

Usage:

google-pubsub-grpc(
  project("my-project")
  topic("my-topic")
  response-action(
    not-found => disconnect
    unavailable => drop
  )
);

@alltilla alltilla requested a review from MrAnno March 27, 2025 18:11
@github-actions
Copy link
Contributor

This Pull Request introduces config grammar changes

axoflow/834b23e6a3b0d3e7ba94b122063787f57ad3944d -> alltilla/grpc-response-handling-override

Details
--- a/destination
+++ b/destination

 axosyslog-otlp(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

 bigquery(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

 clickhouse(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

 google-pubsub-grpc(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

 loki(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

 opentelemetry(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

 syslog-ng-otlp(
+    response-action(
+        <empty>
+        aborted => disconnect
+        aborted => drop
+        aborted => retry
+        aborted => success
+        already-exists => disconnect
+        already-exists => drop
+        already-exists => retry
+        already-exists => success
+        cancelled => disconnect
+        cancelled => drop
+        cancelled => retry
+        cancelled => success
+        data-loss => disconnect
+        data-loss => drop
+        data-loss => retry
+        data-loss => success
+        deadline-exceeded => disconnect
+        deadline-exceeded => drop
+        deadline-exceeded => retry
+        deadline-exceeded => success
+        failed-precondition => disconnect
+        failed-precondition => drop
+        failed-precondition => retry
+        failed-precondition => success
+        internal => disconnect
+        internal => drop
+        internal => retry
+        internal => success
+        invalid-argument => disconnect
+        invalid-argument => drop
+        invalid-argument => retry
+        invalid-argument => success
+        not-found => disconnect
+        not-found => drop
+        not-found => retry
+        not-found => success
+        ok => disconnect
+        ok => drop
+        ok => retry
+        ok => success
+        out-of-range => disconnect
+        out-of-range => drop
+        out-of-range => retry
+        out-of-range => success
+        permission-denied => disconnect
+        permission-denied => drop
+        permission-denied => retry
+        permission-denied => success
+        resource-exhausted => disconnect
+        resource-exhausted => drop
+        resource-exhausted => retry
+        resource-exhausted => success
+        unauthenticated => disconnect
+        unauthenticated => drop
+        unauthenticated => retry
+        unauthenticated => success
+        unavailable => disconnect
+        unavailable => drop
+        unavailable => retry
+        unavailable => success
+        unimplemented => disconnect
+        unimplemented => drop
+        unimplemented => retry
+        unimplemented => success
+        unknown => disconnect
+        unknown => drop
+        unknown => retry
+        unknown => success
+    )
 )

@MrAnno MrAnno merged commit e0a30f8 into axoflow:main Mar 27, 2025
22 checks passed
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

Successfully merging this pull request may close these issues.

2 participants