Skip to content

Do not use IP address 0.0.0.0 on the silo. #1022

Description

@amamh

Version: 1.0.10 -- latest stable

I made a PersistentStreamProvider with a custom adapter that retains old messages in a cache (inside IQueueCache) and is able to replay it for new clients.

My problem is that I can't subscribe to it from normal non-grain objects.

My example is as follows:

  • A producer app: sets some data on the "producer grain"
  • A producer grain: creates a stream using my provider and writes to it every time it gets data
  • A consumer app: creates a IAsyncObserver object that subscribes to same stream that the producer grain is writing to.
  • A zeromq proxy app that acts as the physical queue i.e. my stream is internally using this to communicate.
  • Orleans server

It works fine if:

  • I replace the consumer app with a consumer grain that does the same thing.
  • Instead of subscribing in the consumer app, I send the consumer object to the producer grain which does the subscription for me, as in dataGrain.SubscribeMe(this) where this is the consumer object. This means that the subscription happens on the server side instead of the client side.
  • Replace my custom persistent stream with SimpleMessageStreamProvider.

When I debug the source, I can see that it hangs in PersistentStreamPullingAgent.DoHandshakeWithConsumer:

                requestedToken = await AsyncExecutorWithRetries.ExecuteWithRetries(
                     i => consumerData.StreamConsumer.GetSequenceToken(consumerData.SubscriptionId),
                     AsyncExecutorWithRetries.INFINITE_RETRIES,
                     (exception, i) => true,
                     config.MaxEventDeliveryTime,
                     DefaultBackoffProvider);

The source code for this sample project is here:
https://github.com/amamh/orleans-PipeStreamProvider/tree/netmq

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions