Delay in catch up subscription using .NET client

I have a stream Foos with ~100 events. I create a catch up subscription from the beginning of the stream using SubscribeToStreamFrom (in the .NET client). Then, for each event in Foos, I create another catch up subscription for Foo-n, where n is the event number in Foos. Each of the Foo-n streams has ~10 events. I get all the events in Foos and a few of the ones in the Foo-n streams at onece, then there is a long pause (tens of seconds) and then all the other events from all the subscriptions come through.

Why is there the pause? Is there a limitation for the number of subscriptions? Am I missing a setting for the server? Am I doing something wrong?

The server version is 3.0.5.0. If it helps I can post the code, but it’s really basic.

Thanks,
Victor

Code would help. Also have you enabled verbose client logging and
provided a logger? It will likely tell you what is happening.

With logging turned on, I see something like this appear for each “child” subscription:

[25,08:10:30.338,DEBUG] Catch-up Subscription to Foo-21: running…
[25,08:10:30.339,DEBUG] Catch-up Subscription to Foo-21: pulling events…
[25,08:10:30.339,DEBUG] EventStoreConnection ‘ES-4c09c104-73d1-4277-97b0-d09e8b51451c’: enqueueing message EventStore.ClientAPI.Core.StartOperationMessage…

And each one takes an observable amount of time, and they all add up to the delay I’m seeing.

In real code this would not be a problem, as I would not start the subscriptions from the beginning of time. I just want to make sure that I’m not missing something and that it is reasonable for a subscription to take this long to start.

I have experienced timeouts when starting many subscriptions in a loop (think I peaked at 40 during experimentation). Thread.Yeild or await Task.Delay fixed it if I recall correctly…

/Peter

I guess the question is, then, why is SubscribeToStreamFrom not async, like SubscribeToStreamAsync is?

Because it returns an object that manages asynchronous operations

In terms of delay it looks like that is pulling events and you should
be seeing your events delivered by the subscription as they arrive.