mirror of
https://github.com/fluencelabs/tendermint
synced 2025-04-25 06:42:16 +00:00
fix evidence db iter leak (#2516)
Also make reversing a slice more efficient
This commit is contained in:
parent
fd1b8598bc
commit
5c6999cf8f
@ -39,3 +39,4 @@ IMPROVEMENTS:
|
|||||||
BUG FIXES:
|
BUG FIXES:
|
||||||
- [autofile] \#2428 Group.RotateFile need call Flush() before rename (@goolAdapter)
|
- [autofile] \#2428 Group.RotateFile need call Flush() before rename (@goolAdapter)
|
||||||
- [node] \#2434 Make node respond to signal interrupts while sleeping for genesis time
|
- [node] \#2434 Make node respond to signal interrupts while sleeping for genesis time
|
||||||
|
- [evidence] \#2515 fix db iter leak (@goolAdapter)
|
||||||
|
@ -79,11 +79,11 @@ func NewEvidenceStore(db dbm.DB) *EvidenceStore {
|
|||||||
func (store *EvidenceStore) PriorityEvidence() (evidence []types.Evidence) {
|
func (store *EvidenceStore) PriorityEvidence() (evidence []types.Evidence) {
|
||||||
// reverse the order so highest priority is first
|
// reverse the order so highest priority is first
|
||||||
l := store.listEvidence(baseKeyOutqueue, -1)
|
l := store.listEvidence(baseKeyOutqueue, -1)
|
||||||
l2 := make([]types.Evidence, len(l))
|
for i, j := 0, len(l)-1; i < j; i, j = i+1, j-1 {
|
||||||
for i := range l {
|
l[i], l[j] = l[j], l[i]
|
||||||
l2[i] = l[len(l)-1-i]
|
|
||||||
}
|
}
|
||||||
return l2
|
|
||||||
|
return l
|
||||||
}
|
}
|
||||||
|
|
||||||
// PendingEvidence returns known uncommitted evidence up to maxBytes.
|
// PendingEvidence returns known uncommitted evidence up to maxBytes.
|
||||||
@ -98,6 +98,7 @@ func (store *EvidenceStore) PendingEvidence(maxBytes int64) (evidence []types.Ev
|
|||||||
func (store *EvidenceStore) listEvidence(prefixKey string, maxBytes int64) (evidence []types.Evidence) {
|
func (store *EvidenceStore) listEvidence(prefixKey string, maxBytes int64) (evidence []types.Evidence) {
|
||||||
var bytes int64
|
var bytes int64
|
||||||
iter := dbm.IteratePrefix(store.db, []byte(prefixKey))
|
iter := dbm.IteratePrefix(store.db, []byte(prefixKey))
|
||||||
|
defer iter.Close()
|
||||||
for ; iter.Valid(); iter.Next() {
|
for ; iter.Valid(); iter.Next() {
|
||||||
val := iter.Value()
|
val := iter.Value()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user