Closed QuentinFAIDIDE closed 7 months ago
For the daemon server.
At this location, the jetstream client pool is initialized, but it requires the envar with its url, even though it's not set in my situation where Redis is used. From what I understand, if I don't use jetstream, then the client pool should not get initialized, and there seems to be no risk to move this initialization inside the switch below.
Take my analysis with a grain of salt, I don't know all the context around the developement of Numaflow, just trying to help out as much as I can, maybe there's a fix at another level that makes more sense :)
These locations are all affected:
pkg/udf/map_udf.go
pkg/udf/reduce_udf.go
So since it's everywhere, my guess is that either:
NUMAFLOW_ISBSVC_JETSTREAM_URL
environnement variable should be there.Let me know if one of the mentioned options make sense, I'd even be happy to provide the code for the simplest ones I can handle.
@QuentinFAIDIDE - There are lots of implementation missing in Redis ISBSvc, a JetStream one needs to be used to run the pipeline at this moment.
I have a patch that fixes that here. It does not pass the DropOnFull and Watermark tests though, as I believe these are not supported at all with redis ISBSVC (the Watermak defaults to NoOp in the code if ISBSVC is redis).
Thank you, @QuentinFAIDIDE. Do you mind adding an e2e test to that patch?
It is totally okay not to have DropOnFull or Watermark.
@QuentinFAIDIDE since you are working on the fix, shall i assign this issue to you?
Would be happy yeah! For the tests, I'm not sure of where exactly the CI tests are defined. I see those tests, and I see that if I set the ISBSVC="redis" envar, they will use redis, but I don't know where to specify that redis tests for Watermark and DropOnFull should not be ran. Can I add an if statement for ISBSVC=redis in the test code and return if it's true or is there a better way ?
It seems that there are also tests that pass with Jetstream and not Redis in the test-reduce-one-e2e
suite.
I'm investigating why.
Reduce is maybe not supported with Redis as well ?
that is correct, Reduce is not supported with Redis ISB.
If we turn on the E2E for redis, then need to add some condition check for each test cases - e.g. something like skip for redis
.
Describe the bug With the
simple-example.yaml
pipeline, vertice pods are entering CrashLoopBackoff with the following error when the ISBSVC is a Redis one:Controller logs (note that I was also deleting the pipeline from the default namespace because I forgot to specify the namespace on first yaml applying). Also, the IP
10.43.213.145
it can't reach is the one of the pipeline daemon:Pipeline daemon logs:
To Reproduce Steps to reproduce the behavior:
➜ ~ kubectl describe -n poseidon-dev pipelines.numaflow.numaproj.io simple-pipeline Name: simple-pipeline Namespace: poseidon-dev Labels:
Annotations:
API Version: numaflow.numaproj.io/v1alpha1
Kind: Pipeline
Metadata:
Creation Timestamp: 2024-02-19T09:09:06Z
Finalizers:
pipeline-controller
Generation: 2
Resource Version: 294759750
UID: 878ebd0f-f5ae-4a27-b445-074818f518cf
Spec:
Edges:
From: in
To: cat
From: cat
To: out
Lifecycle:
Delete Grace Period Seconds: 30
Desired Phase: Running
Pause Grace Period Seconds: 30
Limits:
Buffer Max Length: 30000
Buffer Usage Limit: 80
Read Batch Size: 500
Read Timeout: 1s
Vertices:
Name: in
Scale:
Source:
Generator:
Duration: 1s
Key Count: 5
Msg Size: 8
Rpu: 5
Value: 5
Name: cat
Scale:
Udf:
Builtin:
Name: cat
Name: out
Scale:
Sink:
Log:
Watermark:
Disabled: false
Max Delay: 0s
Status:
Conditions:
Last Transition Time: 2024-02-19T09:09:06Z
Message: Successful
Reason: Successful
Status: True
Type: Configured
Last Transition Time: 2024-02-19T09:09:06Z
Message: Successful
Reason: Successful
Status: True
Type: Deployed
Last Updated: 2024-02-19T09:09:06Z
Phase: Running
Sink Count: 1
Source Count: 1
Udf Count: 1
Vertex Count: 3
Events:
Type Reason Age From Message
Normal CreateVertexSuccess 7m21s pipeline-controller Created vertex simple-pipeline-in successfully Normal CreateVertexSuccess 7m21s pipeline-controller Created vertex simple-pipeline-cat successfully Normal CreateVertexSuccess 7m21s pipeline-controller Created vertex simple-pipeline-out successfully Normal CreateDaemonSvcSuccess 7m21s pipeline-controller Succeeded to create daemon service simple-pipeline-daemon-svc Normal CreateDaemonDeploySuccess 7m21s pipeline-controller Succeeded to create/recreate daemon deployment simple-pipeline-daemon