From 13cad524edd76e3911598bc7048ae4ef1bcbe593 Mon Sep 17 00:00:00 2001 From: manish Date: Thu, 21 Jun 2018 08:21:11 -0400 Subject: [PATCH] [FAB-10768] Fix a bug in couchdb version cache This CR fixes a bug in couchdb version cache Change-Id: Iba6f5177dcedc2edf9541f4849384a73d9b51f2c Signed-off-by: manish --- .../statedb/statecouchdb/version_cache.go | 4 +- .../statecouchdb/version_cache_test.go | 37 +++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache_test.go diff --git a/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache.go b/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache.go index 45277983f85..24386370e41 100644 --- a/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache.go +++ b/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache.go @@ -28,9 +28,9 @@ func newVersionCache() *versionsCache { } func (c *versionsCache) getVersion(ns, key string) (*version.Height, bool) { - nsVers, ok := c.vers[ns] + ver, ok := c.vers[ns][key] if ok { - return nsVers[key], true + return ver, true } return nil, false } diff --git a/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache_test.go b/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache_test.go new file mode 100644 index 00000000000..bfea36a6f37 --- /dev/null +++ b/core/ledger/kvledger/txmgmt/statedb/statecouchdb/version_cache_test.go @@ -0,0 +1,37 @@ +/* +Copyright IBM Corp. All Rights Reserved. +SPDX-License-Identifier: Apache-2.0 +*/ + +package statecouchdb + +import ( + "testing" + + "github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/version" + "github.com/stretchr/testify/assert" +) + +func TestVersionCache(t *testing.T) { + verCache := newVersionCache() + ver1 := version.NewHeight(1, 1) + ver2 := version.NewHeight(2, 2) + verCache.setVerAndRev("ns1", "key1", version.NewHeight(1, 1), "rev1") + verCache.setVerAndRev("ns2", "key2", version.NewHeight(2, 2), "rev2") + + ver, found := verCache.getVersion("ns1", "key1") + assert.True(t, found) + assert.Equal(t, ver1, ver) + + ver, found = verCache.getVersion("ns2", "key2") + assert.True(t, found) + assert.Equal(t, ver2, ver) + + ver, found = verCache.getVersion("ns1", "key3") + assert.False(t, found) + assert.Nil(t, ver) + + ver, found = verCache.getVersion("ns3", "key4") + assert.False(t, found) + assert.Nil(t, ver) +}