Skip to content

Commit

Permalink
Merge pull request #1683 from longfin/hotfix/disable-dap-subscription
Browse files Browse the repository at this point in the history
Throttle DAP subscription
  • Loading branch information
longfin committed Nov 14, 2022
2 parents 3f2b772 + c975a9d commit 709c1bf
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ public GraphQLTestBase(ITestOutputHelper output)
StandaloneContextFx = new StandaloneContext
{
KeyStore = keyStore,
DifferentAppProtocolVersionEncounterInterval = TimeSpan.FromSeconds(1),
};
ncService.ConfigureContext(StandaloneContextFx);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,9 +172,13 @@ public async Task SubscribeDifferentAppProtocolVersionEncounter()
var apv1 = AppProtocolVersion.Sign(apvPrivateKey, 1);
var apv2 = AppProtocolVersion.Sign(apvPrivateKey, 0);
var peer = new BoundPeer(apvPrivateKey.PublicKey, new DnsEndPoint("0.0.0.0", 0));
StandaloneContextFx.DifferentAppProtocolVersionEncounterSubject.OnNext(
new DifferentAppProtocolVersionEncounter(peer, apv1, apv2)
);
_ = Task.Run(async () =>
{
await Task.Delay(TimeSpan.FromSeconds(1));
StandaloneContextFx.DifferentAppProtocolVersionEncounterSubject.OnNext(
new DifferentAppProtocolVersionEncounter(peer, apv1, apv2)
);
});
var rawEvents = await stream.Take(1);
var rawEvent = (Dictionary<string, object>)((ExecutionNode)rawEvents.Data!).ToValue()!;
var differentAppProtocolVersionEncounter =
Expand Down
5 changes: 4 additions & 1 deletion NineChronicles.Headless/GraphTypes/StandaloneSubscription.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,10 @@ public StandaloneSubscription(StandaloneContext standaloneContext)
Resolver = new FuncFieldResolver<DifferentAppProtocolVersionEncounter>(context =>
(DifferentAppProtocolVersionEncounter)context.Source!),
Subscriber = new EventStreamResolver<DifferentAppProtocolVersionEncounter>(context =>
StandaloneContext.DifferentAppProtocolVersionEncounterSubject.AsObservable()),
StandaloneContext.DifferentAppProtocolVersionEncounterSubject
.Sample(standaloneContext.DifferentAppProtocolVersionEncounterInterval)
.AsObservable()
),
});
AddField(new EventStreamFieldType
{
Expand Down
7 changes: 5 additions & 2 deletions NineChronicles.Headless/StandaloneContext.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System;
using System.Collections.Concurrent;
using System.Reactive.Subjects;
using Libplanet;
Expand All @@ -22,8 +23,8 @@ public class StandaloneContext
public bool IsMining { get; set; }
public ReplaySubject<NodeStatusType> NodeStatusSubject { get; } = new ReplaySubject<NodeStatusType>();
public ReplaySubject<PreloadState> PreloadStateSubject { get; } = new ReplaySubject<PreloadState>();
public ReplaySubject<DifferentAppProtocolVersionEncounter> DifferentAppProtocolVersionEncounterSubject { get; }
= new ReplaySubject<DifferentAppProtocolVersionEncounter>();
public Subject<DifferentAppProtocolVersionEncounter> DifferentAppProtocolVersionEncounterSubject { get; }
= new Subject<DifferentAppProtocolVersionEncounter>();
public ReplaySubject<Notification> NotificationSubject { get; } = new ReplaySubject<Notification>(1);
public ReplaySubject<NodeException> NodeExceptionSubject { get; } = new ReplaySubject<NodeException>();
public ReplaySubject<MonsterCollectionState> MonsterCollectionStateSubject { get; } = new ReplaySubject<MonsterCollectionState>();
Expand All @@ -44,5 +45,7 @@ public class StandaloneContext
};

public IStore? Store { get; internal set; }

internal TimeSpan DifferentAppProtocolVersionEncounterInterval { get; set; } = TimeSpan.FromSeconds(30);
}
}

0 comments on commit 709c1bf

Please sign in to comment.