diff options
| author | Chris Lu <chris.lu@gmail.com> | 2014-04-16 23:43:27 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2014-04-16 23:43:27 -0700 |
| commit | 51939efeac635d0ba8b683cae6176aa60845b5f7 (patch) | |
| tree | 4b630c01d57cc1cc57e2ed58b25a275109039a30 /go/sequence/memory_sequencer.go | |
| parent | 9653a54766fbb7d9e7453c0df0eb0de016cfbce6 (diff) | |
| download | seaweedfs-51939efeac635d0ba8b683cae6176aa60845b5f7.tar.xz seaweedfs-51939efeac635d0ba8b683cae6176aa60845b5f7.zip | |
1. volume server now sends master server its max file key, so that
master server does not need to store the sequence on disk any more
2. fix raft server's failure to init cluster during bootstrapping
Diffstat (limited to 'go/sequence/memory_sequencer.go')
| -rw-r--r-- | go/sequence/memory_sequencer.go | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/go/sequence/memory_sequencer.go b/go/sequence/memory_sequencer.go index d72952ff4..c7ee1ae8f 100644 --- a/go/sequence/memory_sequencer.go +++ b/go/sequence/memory_sequencer.go @@ -1,10 +1,13 @@ package sequence -import () +import ( + "sync" +) // just for testing type MemorySequencer struct { - counter uint64 + counter uint64 + sequenceLock sync.Mutex } func NewMemorySequencer() (m *MemorySequencer) { @@ -13,7 +16,21 @@ func NewMemorySequencer() (m *MemorySequencer) { } func (m *MemorySequencer) NextFileId(count int) (uint64, int) { + m.sequenceLock.Lock() + defer m.sequenceLock.Unlock() ret := m.counter m.counter += uint64(count) return ret, count } + +func (m *MemorySequencer) SetMax(seenValue uint64) { + m.sequenceLock.Lock() + defer m.sequenceLock.Unlock() + if m.counter <= seenValue { + m.counter = seenValue + 1 + } +} + +func (m *MemorySequencer) Peek() uint64 { + return m.counter +} |
