Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ask for mempool after sync #1544

Merged
merged 30 commits into from
May 25, 2020
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
53107a6
Query mempool if I have less tx than the remote node
shargon Apr 7, 2020
819ba47
Revert some changes
shargon Apr 7, 2020
54035b5
Wait for verack
shargon Apr 7, 2020
7dcb2e4
Clean file
shargon Apr 7, 2020
9bf158e
Merge branch 'master' into query-pool
shargon Apr 18, 2020
cb8f512
Move to verack
shargon Apr 18, 2020
6880a14
Wait for block sync
shargon Apr 18, 2020
5839014
Clean changes
shargon Apr 18, 2020
359a3bb
Only accept one mempool message per remote node
shargon Apr 18, 2020
31911b6
Remove one variable
shargon Apr 18, 2020
08171f2
Revert "Only accept one mempool message per remote node"
shargon Apr 18, 2020
00356a1
Optimize
shargon Apr 18, 2020
74e230e
Merge branch 'master' into query-pool
shargon Apr 22, 2020
da96c1f
Merge branch 'master' into query-pool
shargon Apr 27, 2020
0fd2120
Merge branch 'master' into query-pool
shargon May 6, 2020
e1a6bba
Merge branch 'master' into query-pool
vncoelho May 7, 2020
78d4d57
Merge branch 'master' into query-pool
shargon May 11, 2020
7c8ce2b
Check it in TaskManager
shargon May 11, 2020
68f2e84
Merge branch 'master' into query-pool
shargon May 12, 2020
9d66604
Merge branch 'master' into query-pool
shargon May 14, 2020
26494e0
Merge branch 'master' into query-pool
shargon May 15, 2020
5be4818
Update src/neo/Network/P2P/TaskSession.cs
shargon May 18, 2020
6eeffcb
Merge branch 'master' into query-pool
shargon May 18, 2020
ad6f5cc
Revert
shargon May 18, 2020
d9a8451
Merge branch 'master' into query-pool
erikzhang May 18, 2020
8d96823
fix MemPoolTaskHash (#1660)
May 20, 2020
7532e6a
Merge branch 'master' into query-pool
shargon May 20, 2020
9a781d1
Merge branch 'master' into query-pool
vncoelho May 20, 2020
477352b
Fix ms bug
shargon May 21, 2020
89bae8f
private
erikzhang May 22, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/neo/Network/P2P/TaskManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ private class Timer { }

private static readonly TimeSpan TimerInterval = TimeSpan.FromSeconds(30);
private static readonly TimeSpan TaskTimeout = TimeSpan.FromMinutes(1);
private static readonly UInt256 HeaderTaskHash = UInt256.Zero;
internal static readonly UInt256 MemPoolTaskHash = UInt256.Parse("0x0000000000000000000000000000000000000000000000000000000000000001");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can it be private?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


private readonly NeoSystem system;
private const int MaxConncurrentTasks = 3;
Expand All @@ -37,7 +39,6 @@ private class Timer { }
private readonly Dictionary<IActorRef, TaskSession> sessions = new Dictionary<IActorRef, TaskSession>();
private readonly ICancelable timer = Context.System.Scheduler.ScheduleTellRepeatedlyCancelable(TimerInterval, TimerInterval, Context.Self, new Timer(), ActorRefs.NoSender);

private readonly UInt256 HeaderTaskHash = UInt256.Zero;
private bool HasHeaderTask => globalTasks.ContainsKey(HeaderTaskHash);

public TaskManager(NeoSystem system)
Expand Down Expand Up @@ -183,7 +184,6 @@ private bool IncrementGlobalTask(UInt256 hash)
return false;

globalTasks[hash] = value + 1;

return true;
}

Expand Down Expand Up @@ -271,6 +271,11 @@ private void RequestTasks(TaskSession session)
else if (Blockchain.Singleton.HeaderHeight >= session.LastBlockIndex
&& TimeProvider.Current.UtcNow.ToTimestamp() - PingCoolingOffPeriod >= Blockchain.Singleton.GetBlock(Blockchain.Singleton.CurrentHeaderHash)?.Timestamp)
{
if (session.AvailableTasks.Remove(MemPoolTaskHash))
{
session.RemoteNode.Tell(Message.Create(MessageCommand.Mempool));
}

session.RemoteNode.Tell(Message.Create(MessageCommand.Ping, PingPayload.Create(Blockchain.Singleton.Height)));
}
}
Expand Down
13 changes: 10 additions & 3 deletions src/neo/Network/P2P/TaskSession.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,23 @@ internal class TaskSession

public bool HasTask => Tasks.Count > 0;
public uint StartHeight { get; }
public bool IsFullNode { get; }
public uint LastBlockIndex { get; set; }

public TaskSession(IActorRef node, VersionPayload version)
{
var fullNode = version.Capabilities.OfType<FullNodeCapability>().FirstOrDefault();

this.IsFullNode = fullNode != null;
this.RemoteNode = node;
this.Version = version;
this.StartHeight = version.Capabilities
.OfType<FullNodeCapability>()
.FirstOrDefault()?.StartHeight ?? 0;
this.StartHeight = fullNode?.StartHeight ?? 0;
this.LastBlockIndex = this.StartHeight;

if (IsFullNode)
{
AvailableTasks.Add(TaskManager.MemPoolTaskHash);
}
}
}
}