Skip to content

Commit

Permalink
Merge pull request #2905 from cfromknecht/split-chunk-size
Browse files Browse the repository at this point in the history
discovery: make batch size distinct from chunk size, reduce to 500
  • Loading branch information
Roasbeef authored Apr 10, 2019
2 parents a2aeb64 + a4b4fe6 commit 3e5a6f1
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
1 change: 1 addition & 0 deletions discovery/sync_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,7 @@ func (m *SyncManager) InitSyncState(peer lnpeer.Peer) {
channelSeries: m.cfg.ChanSeries,
encodingType: encoding,
chunkSize: encodingTypeToChunkSize[encoding],
batchSize: requestBatchSize,
sendToPeer: func(msgs ...lnwire.Message) error {
return peer.SendMessageLazy(false, msgs...)
},
Expand Down
14 changes: 11 additions & 3 deletions discovery/syncer.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,10 @@ const (
// syncTransitionTimeout is the default timeout in which we'll wait up
// to when attempting to perform a sync transition.
syncTransitionTimeout = 5 * time.Second

// requestBatchSize is the maximum number of channels we will query the
// remote peer for in a QueryShortChanIDs message.
requestBatchSize = 500
)

var (
Expand Down Expand Up @@ -183,6 +187,10 @@ type gossipSyncerCfg struct {
// encoding type that we can fit into a single message safely.
chunkSize int32

// batchSize is the max number of channels the syncer will query from
// the remote node in a single QueryShortChanIDs request.
batchSize int32

// sendToPeer is a function closure that should send the set of
// targeted messages to the peer we've been assigned to sync the graph
// state from.
Expand Down Expand Up @@ -570,16 +578,16 @@ func (g *GossipSyncer) synchronizeChanIDs() (bool, error) {

// If the number of channels to query for is less than the chunk size,
// then we can issue a single query.
if int32(len(g.newChansToQuery)) < g.cfg.chunkSize {
if int32(len(g.newChansToQuery)) < g.cfg.batchSize {
queryChunk = g.newChansToQuery
g.newChansToQuery = nil

} else {
// Otherwise, we'll need to only query for the next chunk.
// We'll slice into our query chunk, then slide down our main
// pointer down by the chunk size.
queryChunk = g.newChansToQuery[:g.cfg.chunkSize]
g.newChansToQuery = g.newChansToQuery[g.cfg.chunkSize:]
queryChunk = g.newChansToQuery[:g.cfg.batchSize]
g.newChansToQuery = g.newChansToQuery[g.cfg.batchSize:]
}

log.Infof("GossipSyncer(%x): querying for %v new channels",
Expand Down
1 change: 1 addition & 0 deletions discovery/syncer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@ func newTestSyncer(hID lnwire.ShortChannelID,
channelSeries: newMockChannelGraphTimeSeries(hID),
encodingType: encodingType,
chunkSize: chunkSize,
batchSize: chunkSize,
sendToPeer: func(msgs ...lnwire.Message) error {
msgChan <- msgs
return nil
Expand Down

0 comments on commit 3e5a6f1

Please sign in to comment.