Skip to content

Commit ac8820e

Browse files
committed
fix(embedded/store): use reserved concurrency slot for indexing
Signed-off-by: Jeronimo Irazabal <[email protected]>
1 parent 78a08fd commit ac8820e

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

embedded/store/immustore_test.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -559,14 +559,10 @@ func TestImmudbStoreEdgeCases(t *testing.T) {
559559
tx1, err := immuStore.fetchAllocTx()
560560
require.NoError(t, err)
561561

562-
tx2, err := immuStore.fetchAllocTx()
563-
require.NoError(t, err)
564-
565562
_, err = immuStore.fetchAllocTx()
566563
require.Equal(t, ErrMaxConcurrencyLimitExceeded, err)
567564

568565
immuStore.releaseAllocTx(tx1)
569-
immuStore.releaseAllocTx(tx2)
570566

571567
_, err = immuStore.NewTxReader(1, false, nil)
572568
require.Equal(t, ErrIllegalArguments, err)

embedded/store/indexer.go

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ type indexer struct {
2929
path string
3030

3131
store *ImmuStore
32+
tx *Tx
3233

3334
index *tbtree.TBtree
3435

@@ -63,8 +64,14 @@ func newIndexer(path string, store *ImmuStore, indexOpts *tbtree.Options, maxWai
6364
wHub = watchers.New(0, maxWaitees)
6465
}
6566

67+
tx, err := store.fetchAllocTx()
68+
if err != nil {
69+
return nil, err
70+
}
71+
6672
indexer := &indexer{
6773
store: store,
74+
tx: tx,
6875
path: path,
6976
index: index,
7077
wHub: wHub,
@@ -163,6 +170,7 @@ func (idx *indexer) Close() error {
163170

164171
idx.stop()
165172
idx.wHub.Close()
173+
idx.store.releaseAllocTx(idx.tx)
166174

167175
idx.closed = true
168176

@@ -307,13 +315,7 @@ func (idx *indexer) doIndexing(cancellation <-chan struct{}) {
307315
}
308316

309317
func (idx *indexer) indexSince(txID uint64, limit int) error {
310-
tx, err := idx.store.fetchAllocTx()
311-
if err != nil {
312-
return err
313-
}
314-
defer idx.store.releaseAllocTx(tx)
315-
316-
txReader, err := idx.store.newTxReader(txID, false, tx)
318+
txReader, err := idx.store.newTxReader(txID, false, idx.tx)
317319
if err != nil {
318320
return err
319321
}

0 commit comments

Comments
 (0)