knative-extensions / eventing-natss

NATS streaming integration with Knative Eventing.
Apache License 2.0
38 stars 39 forks source link

fix: The broker trigger based on NatsJetStreamChannel leads to "No TTL seen, dropping". #518

Open metacoma opened 3 months ago

metacoma commented 3 months ago

Describe the bug Event is displayed in the dead-letter with the reason ''No TTL seen, dropping"

Expected behavior Event that passed through a knative trigger based on NatsJetStreamChannel should be displayed in the event-display pod

To Reproduce

apiVersion: v1
kind: ConfigMap
metadata:
  name: config-natjsm-channel
  labels:
    eventing.knative.dev/release: devel
data:
  channelTemplateSpec: |
    apiVersion: messaging.knative.dev/v1alpha1
    kind: NatsJetStreamChannel
    spec:
      stream:
        overrideName: mindwm_user_mindwm-dev1
        config:
          additionalSubjects: 
            - "mindwm.user.mindwm-dev1.>"
---
apiVersion: eventing.knative.dev/v1
kind: Broker
metadata:
  name: mindwmbroker
  namespace: user
spec:
  config:
    apiVersion: v1
    kind: ConfigMap
    name: config-natjsm-channel
  delivery:
    deadLetterSink:
      ref:
        apiVersion: serving.knative.dev/v1
        kind: Service
        name: dead-letter-broker
---
apiVersion: eventing.knative.dev/v1
kind: Trigger
metadata:
  name: all-events
spec:
  broker: mindwmbroker
  subscriber:
    ref:
      apiVersion: serving.knative.dev/v1
      kind: Service
      name: event-display
  delivery:
    deadLetterSink:
      ref:
        apiVersion: serving.knative.dev/v1
        kind: Service
        name: dead-letter
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: dead-letter-broker
  labels:
    contrib.eventing.knative.dev/release: devel
spec:
  template:
    spec:
      containers:
      - image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: dead-letter
  labels:
    contrib.eventing.knative.dev/release: devel
spec:
  template:
    spec:
      containers:
      - image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: event-display
  labels:
    contrib.eventing.knative.dev/release: devel
spec:
  template:
    spec:
      containers:
      - image: gcr.io/knative-releases/knative.dev/eventing/cmd/event_display
$ kubectl get NatsJetStreamChannel
NAME                       READY   REASON   URL                                                                         AGE
mindwmbroker-kne-trigger   True             http://mindwmbroker-kne-trigger-kn-jsm-channel.ksandbox.svc.cluster.local   16m
$ kubectl get broker
NAME           URL                                                                              AGE   READY   REASON
mindwmbroker   http://broker-ingress.knative-eventing.svc.cluster.local/ksandbox/mindwmbroker   16m   True    
$ kubectl get trigger
NAME         BROKER         SUBSCRIBER_URI                                    AGE   READY   REASON
all-events   mindwmbroker   http://event-display.ksandbox.svc.cluster.local   14m   True    
$ nats stream info mindwm_user_mindwm-dev1  
Information for Stream mindwm_user_mindwm-dev1 created 2024-03-08 20:20:37

              Subjects: ksandbox.mindwmbroker-kne-trigger._knative, mindwm.user.mindwm-dev1.>
              Replicas: 1
              Storage: File
 $ cat<<EOF | nats pub mindwm.user.mindwm-dev1.test-topic
> 
{
    "specversion" : "1.0",
    "type" : "com.github.pull.create",
    "source" : "/cloudevents/spec/pull",
    "subject" : "123",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "text/xml",
    "data" : "<much wow=\"xml\"/>"
}
> EOF
20:39:11 Reading payload from STDIN
20:39:11 Published 342 bytes to "mindwm.user.mindwm-dev1.test-topic"
$ kubectl get pods
NAME                                         READY   STATUS    RESTARTS   AGE
dead-letter-00001-deployment-dc546cf-c88h8   2/2     Running   0          4s
$ kubectl logs dead-letter-00001-deployment-dc546cf-c88h8
Defaulted container "user-container" out of: user-container, queue-proxy
2024/03/08 20:41:02 Failed to read tracing config, using the no-op default: empty json tracing config
☁️  cloudevents.Event
Context Attributes,
  specversion: 1.0
  type: com.github.pull.create
  source: /cloudevents/spec/pull
  subject: 123
  id: A234-1234-1234
  time: 2018-04-05T17:31:00Z
  datacontenttype: text/xml
Extensions,
  comexampleextension1: value
  comexampleothervalue: 5
Data,
  <much wow="xml"/>
$ kubectl -n knative-eventing logs --tail=1 mt-broker-filter-c46948dfd-8mf7d
{
  "level": "warn",
  "ts": "2024-03-08T20:41:01.114Z",
  "logger": "mt_broker_filter",
  "caller": "filter/filter_handler.go:187",
  "msg": "No TTL seen, dropping",
  "commit": "cb5dfda",
  "triggerRef": "ksandbox/all-events",
  "event": "Context Attributes,\n  specversion: 1.0\n  type: com.github.pull.create\n  source: /cloudevents/spec/pull\n  subject: 123\n  id: A234-1234-1234\n  time: 2018-04-05T17:31:00Z\n  datacontenttype: text/xml\nExtensions,\n  comexampleextension1: value\n  comexampleothervalue: 5\nData,\n  <much wow=\"xml\"/>\n"
}

Knative release version 1.12.3, also, in version 1.13.0, the same thing occurred

Additional context I tried the latest version of eventing-nats from master branch version and knative 1.13 I also tried eventing-nats 1.10.7 with Knative version 1.12.3.

It's possible related to https://github.com/knative/eventing/issues/2443 ?

metacoma commented 3 months ago

Adding "knativebrokerttl":"255" to the payload helped!

{
    "specversion" : "1.0",
    "knativebrokerttl":"255",
    "type" : "com.github.pull.create",
    "source" : "/cloudevents/spec/pull",
    "subject" : "123",
    "id" : "A234-1234-1234",
    "time" : "2018-04-05T17:31:00Z",
    "comexampleextension1" : "value",
    "comexampleothervalue" : 5,
    "datacontenttype" : "text/xml",
    "data" : "<much wow=\"xml\"/>"
}
$ kubectl logs event-display-00001-deployment-67f64764f4-znr7w -c user-container
2024/03/08 23:19:14 Failed to read tracing config, using the no-op default: empty json tracing config
☁️  cloudevents.Event
Context Attributes,
  specversion: 1.0
  type: com.github.pull.create
  source: /cloudevents/spec/pull
  subject: 123
  id: A234-1234-1234
  time: 2018-04-05T17:31:00Z
  datacontenttype: text/xml
Extensions,
  comexampleextension1: value
  comexampleothervalue: 5
Data,
  <much wow="xml"/>

I found this "workaround" here https://github.com/knative-extensions/eventing-natss/issues/381

github-actions[bot] commented 4 weeks ago

This issue is stale because it has been open for 90 days with no activity. It will automatically close after 30 more days of inactivity. Reopen the issue with /reopen. Mark the issue as fresh by adding the comment /remove-lifecycle stale.