Comments (3)
This is what I think the problem is:
While tree.Iterate
is called with tree.Hash()
as the root hash, tree.Hash()
is called on the latest versioned tree (the persisted tree, see here).
tree.Iterate(...)
on the other side operates on the whole tree (incl. the non-persisted / orphaned nodes); see here
The test passes again if:
===================================================================
--- basic_test.go (revision fd37a0fa3a7454423233bc3d5ea828f38e0af787)
+++ basic_test.go (date 1525356743000)
@@ -387,7 +387,7 @@
}
func TestProof(t *testing.T) {
- t.Skipf("This test has a race condition causing it to occasionally panic.")
+ //t.Skipf("This test has a race condition causing it to occasionally panic.")
// Construct some random tree
db := db.NewMemDB()
@@ -412,7 +412,7 @@
assert.NoError(t, err)
assert.Equal(t, value, value2)
if assert.NotNil(t, proof) {
- testProof(t, proof.(*KeyExistsProof), key, value, tree.Hash())
+ testProof(t, proof.(*KeyExistsProof), key, value, tree.orphaningTree.Hash())
}
return false
})
Looks like there should be 2 VersionedTree.Hash()
methods (one with orphans and one without), or, there should be a VersionedTree.Iterate
which ignores the orphaned nodes (like Hash() does), too.
What should be the intended behaviour here? @jaekwon @ebuchman
from iavl.
After discussing with @jlandrews, will open a PR with the above changes which will fix the test.
from iavl.
resolved in #92
from iavl.
Related Issues (20)
- Racing conditions on `UnsavedFastIterator` & `MutableTree` HOT 6
- Change node key of leaf nodes to contain the value's key
- Restoring state-sync snapshot takes a long time HOT 5
- all: use SHA256 with SIMD instructions for higher performance and throughout HOT 14
- export: don't support multiple formats HOT 3
- empty root loading is failed in `GetImmutable`
- upstream deepsubtree work from celestia
- Proposed new repo API
- Implement a `lazy set` for the migration to the new node key format HOT 2
- Consider dropping error result from ImmutableTree.Iterator
- Consider dropping error result from ImmutableTree.Export
- Drop error result from NewMutableTree/NewMutableTreeWithOpts HOT 1
- Drop error result from Node.hashWithCount HOT 1
- leaf separation or versiondb integration HOT 1
- keyformat: (*KeyFormat).KeyBytes presumes that len(kf.layout) will always be non-empty
- internal/rand: RandStr and (*Rand).Str should have limits to their lengths lest cause memory hogs and if used can caused a Denial-of-Service HOT 1
- Consider changing the type of NodeKey.nonce to uint32 HOT 7
- Missing bounds check in deltaEncode HOT 1
- Memory leak during State Sync HOT 4
- iavl export failed with "version does not exist" HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iavl.