Skip to content

Commit 2468c3d

Browse files
committed
Improve function GetStateRangeScanIterator
- Close iterators if newItrCombiner fails. - Handle nil iterators returned without errors. - Improve error messages for debugging. Signed-off-by: David Enyeart <enyeart@us.ibm.com>
1 parent d332a6d commit 2468c3d

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

core/ledger/kvledger/txmgmt/queryutil/query_executer_combiner.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/privacyenabledstate"
1313
"github.com/hyperledger/fabric/core/ledger/kvledger/txmgmt/statedb"
1414
"github.com/hyperledger/fabric/core/ledger/util"
15+
"github.com/pkg/errors"
1516
)
1617

1718
var logger = flogging.MustGetLogger("util")
@@ -62,12 +63,21 @@ func (c *QECombiner) GetStateRangeScanIterator(namespace string, startKey string
6263
for _, itr := range itrs {
6364
itr.Close()
6465
}
65-
return nil, err
66+
return nil, errors.Wrap(err, "failed to get iterator from QueryExecuter")
67+
}
68+
if itr == nil {
69+
for _, itr := range itrs {
70+
itr.Close()
71+
}
72+
return nil, errors.New("received nil iterator from QueryExecuter")
6673
}
6774
itrs = append(itrs, itr)
6875
}
6976
itrCombiner, err := newItrCombiner(namespace, itrs)
7077
if err != nil {
78+
for _, itr := range itrs {
79+
itr.Close()
80+
}
7181
return nil, err
7282
}
7383
return itrCombiner, nil

0 commit comments

Comments
 (0)