MCPcopy Create free account
hub / github.com/couchbase/sync_gateway / newSequenceAllocator

Function newSequenceAllocator

db/sequence_allocator.go:66–91  ·  view source on GitHub ↗
(ctx context.Context, datastore base.DataStore, dbStatsMap *base.DatabaseStats, metaKeys *base.MetadataKeys)

Source from the content-addressed store, hash-verified

64}
65
66func newSequenceAllocator(ctx context.Context, datastore base.DataStore, dbStatsMap *base.DatabaseStats, metaKeys *base.MetadataKeys) (*sequenceAllocator, error) {
67 if dbStatsMap == nil {
68 return nil, fmt.Errorf("dbStatsMap parameter must be non-nil")
69 }
70
71 s := &sequenceAllocator{
72 datastore: datastore,
73 dbStats: dbStatsMap,
74 metaKeys: metaKeys,
75 }
76 s.terminator = make(chan struct{})
77 s.sequenceBatchSize = idleBatchSize
78 s.releaseSequenceWait = defaultReleaseSequenceWait
79
80 // The reserveNotify channel manages communication between the releaseSequenceMonitor goroutine and _reserveSequenceRange invocations.
81 s.reserveNotify = make(chan struct{}, 1)
82 _, err := s.lastSequence(ctx) // just reads latest sequence from bucket
83 if err != nil {
84 return nil, err
85 }
86 go func() {
87 defer base.FatalPanicHandler()
88 s.releaseSequenceMonitor(ctx)
89 }()
90 return s, err
91}
92
93func (s *sequenceAllocator) Stop(ctx context.Context) {
94

Callers 6

NewDatabaseContextFunction · 0.70
TestReleaseSequenceWaitFunction · 0.70

Calls 4

lastSequenceMethod · 0.95
FatalPanicHandlerFunction · 0.92
ErrorfMethod · 0.80