Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • 05:32
    ReubenBond ready_for_review #6884
  • 05:32
    ReubenBond edited #6884
  • 00:33
    ReubenBond synchronize #6884
  • 00:29
    ReubenBond synchronize #6884
  • 00:15

    ReubenBond on 3.4.1

    Try to limit forwarding when a … (compare)

  • 00:15
    ReubenBond closed #6893
  • Jan 15 23:37
    govenkat-ms commented #6894
  • Jan 15 23:32
    benjaminpetit assigned #6894
  • Jan 15 23:32
    benjaminpetit commented #6894
  • Jan 15 23:31
    govenkat-ms opened #6894
  • Jan 15 23:01
    benjaminpetit opened #6893
  • Jan 15 23:01
    benjaminpetit milestoned #6893
  • Jan 15 20:38

    ReubenBond on master

    Try to limit forwarding when a … (compare)

  • Jan 15 20:38
    ReubenBond closed #6891
  • Jan 15 19:17
    benjaminpetit synchronize #6891
  • Jan 15 10:22
    panyang1217 commented #6420
  • Jan 15 09:58
    youlxs commented #6420
  • Jan 15 05:50
    m2xs starred dotnet/orleans
  • Jan 15 04:43
    azure-pipelines[bot] commented #6891
  • Jan 15 04:43
    benjaminpetit commented #6891
Sanjeev M
@zeus82
cool - thanks, I'll do some digging tonight
Tom Rathbone
@chillitom
quick nooby question.. if I want call a method on a another grain and not await it can I use .ContinueWith(...) to get a notification on the grain's thread when the task completes?
Tom Rathbone
@chillitom
answered my own question by trying it out.. answer.. yes you can.
吃了会中毒
@GaLeGayGay
hello everyone
When I first register an event via Stream on the client side. This error occurs.
I have consulted the relevant documentation. I have checked the documentation and searched git and Google for the relevant information with no luck. Where do I go to solve this problem?
System.NullReferenceException: Object reference not set to an instance of an object.
at Orleans.Internal.OrleansTaskExtentions.<ToTypedTask>g__ConvertAsync|4_0T
at Orleans.Streams.StreamPubSubImpl.GetAllSubscriptions(StreamId streamId, IStreamConsumerExtension streamConsumer)
at Orleans.Streams.StreamConsumer`1.GetAllSubscriptions()
image.png
吃了会中毒
@GaLeGayGay
Sorry ,Not very good with gitter
My Client Code
        Client = new ClientBuilder()
            .UseCosmosDBGatewayListProvider(options =>
            {
                options.AccountEndpoint = "---";
                options.AccountKey = "---";
            })
            .Configure<ClusterOptions>(options =>
            {
                options.ClusterId = "Test1";
                options.ServiceId = "HelloWorld";
            })
            .Configure<GatewayOptions>(d => d.GatewayListRefreshPeriod = TimeSpan.FromSeconds(5))
            .ConfigureLogging(logging => logging.AddConsole())
            .AddSimpleMessageStreamProvider(Constants.GuildInfoStreamProvider)
            .Build();
Register Code
        var guildProvider = actorComponent.Client.GetStreamProvider(Constants.GuildInfoStreamProvider);

        var guildChanged = guildProvider.GetStream<PlayerGuildChangedMsg>(Guid.Empty, info.id);
        var guildChangedSubEvent = await guildChanged.SubscribeAsync((msg, token) => GuildChangedCallback(session, msg,db));
Silo Code
        ISiloHostBuilder builder = new SiloHostBuilder()
            .AddCosmosDBGrainStorage("Profile",options =>
            {
                options.Client = DatabaseClient.Core;
                options.CanCreateResources = true;
            })
            .AddCosmosDBGrainStorage("PubSubStore",options =>
            {
                options.Client = DatabaseClient.Core;
            })
            .UseCosmosDBMembership(options =>
            {
                options.Client = DatabaseClient.Core;
                options.CanCreateResources = true;
            })
            .Configure<ClusterOptions>(options =>
            {
                options.ClusterId = "Test1";
                options.ServiceId = "HelloWorld";
            })
            .Configure<EndpointOptions>(options =>
            {
                options.AdvertisedIPAddress = IPAddress.Loopback;
                options.SiloPort = siloPort;
                options.GatewayPort = gatewayPort;
            })
            .ConfigureServices(collection =>
            {
                collection.AddSingleton(DatabaseClient);
            })
            .AddSimpleMessageStreamProvider(Constants.GuildInfoStreamProvider)
            .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(StateCode).Assembly).WithReferences())
            .ConfigureLogging(logging => logging.AddConsole());
The error occurs when I use GetAllSubscriptionHandles. But calling SubscribeAsync also throws an error that there is no instance
吃了会中毒
@GaLeGayGay
this is msg code
public class PlayerGuildChangedMsg
{
    public long GuildId;
}
Mickael Lamare
@Mickael-Lamare
@GaLeGayGay isn't it because it misses 'AddMemoryGrainStorage("PubSubStore")' on silo configuration?
吃了会中毒
@GaLeGayGay
@Mickael-Lamare I am using CosmosDB to store
Tom Rathbone
@chillitom
any way to turn off the HTTP access log messages in the logs of the OrleansDashboard?
Sanjeev M
@zeus82
Reuben, Veikko, sorry for the delayed update, but I took a core dump, but VS was throwing an error when I tried looking at it... I'll investigate more over the weekend. I also change the SQL client to what you suggested.
David Christensen
@OracPrime
Has anyone given any thought to reducing the overhead of looking for non-existent persisted grains? Our application does a series of jobs. Each job has a unique GUID and grains within the job are keyed on that GUID (and other things). So we know at the start of the job, none of the grains for this job are on persistent store. However looking on the persistent store on activation of every grain is a significant overhead. Has anyone got a way of reducing or removing this overhead? Some combination of Bloom filters and the grain catalog?
Reuben Bond
@ReubenBond
@OracPrime maybe a RequestContext hint to prevent loading during activation could be implemented in your storage provider, assuming you know when you're activating the grain for the first time
David Christensen
@OracPrime
We know when first activation is, yes. Is there an example/docs of anything similar? Thanks.
Reuben Bond
@ReubenBond
No, it's not something that's implemented
But you could try it with a custom storage provider
David Christensen
@OracPrime
@ReubenBond OK, thanks, I can see some RequestContext test cases in the main Orleans solution that I can use for inspiration.
Veikko Eeva
@veikkoeeva
Is this hint something that could be exposed to all providers?
By some default way, i.e. if(SkipStorage) { return; }.
@zeus82 For me no need, but if you want to examine this case and maybe share, go ahead. I will read in any case and if you need something, I pick from here.
Sanjeev M
@zeus82
cool thanks @veikkoeeva
I'll be digging into it more this weekend
Veikko Eeva
@veikkoeeva
Toptal really is looking for Solidity programmers at the moment. Something is really driving the need now.
@zeus82 :+1:
Reuben Bond
@ReubenBond
It's arguable, @veikkoeeva & @OracPrime. I believe it may be a good-to-have feature, however my main concern is that it would complicate semantics & lead users into difficult to troubleshoot scenarios where they are accidentally always setting it due to logic bugs in their applications
Veikko Eeva
@veikkoeeva
@ReubenBond You are right there. I was already thinking how to detect the first installation and if the call succeeded, in all fault situations also.
first installation = first activation
Reuben Bond
@ReubenBond
For the time being, I believe that it's something advanced users should try when they identify the need. If it becomes a proven strategy, with semantics which are easy to understand and reason about for novice users, then perhaps it will be worth introducing more broadly.
David Christensen
@OracPrime
If we come up with anything generically useful, we'll let you know!
Reuben Bond
@ReubenBond
Much appreciated :)
govenkat-ms
@govenkat-ms
Is there guidance on when listenOnAnyHostAddress should be true for Orleans on K8s?
Reuben Bond
@ReubenBond
@govenkat-ms it really just depends on how you want to set up your networking. You have control over whether you listen on a specific interface (IP address) or all interfaces. So it's nothing Orleans-specific. In general, you can set it to true in k8s and you shouldn't have any negative implications because of that (you are already on a container IP, for example, and not a host interface)
Veikko Eeva
@veikkoeeva
Yes, @OracPrime, much appreciated. I for one appreciate any hints on real issues. If nothing else, it takes time to just write something semi-coherent about findings. But maybe that's the way: recognize it, solidify the foundations and build on top. We should document somehow these more in Orleans community. :)
govenkat-ms
@govenkat-ms
@ReubenBond Got it. Thanks. One more thing. We recently switched to using a PreferLocalPlacement strategy and noticed the following exception: System.ArgumentNullException: Value cannot be null. (Parameter 'existingActivationAddress')
at Orleans.Runtime.Catalog.RegisterActivationInGrainDirectoryAndValidate(ActivationData activation)
at Orleans.Runtime.Catalog.InitActivation(ActivationData activation, Dictionary2 requestContextData) at Orleans.Runtime.Catalog.InitActivation(ActivationData activation, Dictionary2 requestContextData)
Forwarding 1 requests destined for address S10.241.32.192:11114:348371692*grn/2E596F41/1ca50c90@854be08e to address (null) after Failed RegisterActivationInGrainDirectory
Reuben Bond
@ReubenBond
Could you please open an issue for that, @govenkat-ms?
cc @benjaminpetit
govenkat-ms
@govenkat-ms
sure