Comments (7)
from unroot.jl.
when we fix this we should add a test
from unroot.jl.
Thanks for hunting this down 😉
from unroot.jl.
My best guess currently is
v0.10.5...v0.10.6#diff-96fd19227b50278b8b930998f46f92b76e3d9524a81988f16c6d47fbe7b99d6fR60
I'm having a look...
from unroot.jl.
And this line:
v0.10.5...v0.10.6#diff-96fd19227b50278b8b930998f46f92b76e3d9524a81988f16c6d47fbe7b99d6fR193
So in principle, we have a type inference problem because .fBasketEntry
and .fBaskets.elements
are not type-safe.
from unroot.jl.
Actually I think we are rather dancing at the edge of type interference nesting and a single line where we check if findfirst
returns nothing
totally breaks the inference.
Look at this rewritten _localindex_newbasket!()
function which now dispatches on two different _get_buffer_range()
functions. The one which dispatches on Nothing
is commented out. Everything works. If I comment it back, it's unstable again:
function _localindex_newbasket!(ba::LazyBranch{T,J,B}, idx::Integer, tid::Int) where {T,J,B}
seek_idx = findfirst(x -> x > (idx - 1), ba.fEntry) #support 1.0 syntax
br = _get_buffer_range(ba, tid, seek_idx)
ba.buffer_range[tid] = br
return idx - br.start + 1
end
function _get_buffer_range(ba::LazyBranch{T, J, B}, tid::Integer, seek_idx::Integer) where {T,J,B}
seek_idx -= 1
ba.buffer[tid] = basketarray(ba.f, ba.b, seek_idx)
(ba.fEntry[seek_idx] + 1):(ba.fEntry[seek_idx + 1])
end
# function _get_buffer_range(ba::LazyBranch{T, J, B}, tid::Integer, ::Nothing) where {T,J,B}
# ba.buffer[tid] = basketarray(ba.f, ba.b, -1) # -1 indicating recovered basket mechanics
# # FIXME: this range is probably wrong for jagged data with non-empty offsets
# ba.b.fBasketEntry[end] + 1:ba.b.fEntries
# end
The .fBasketEntry
cannot be the culprit, it's an Array{Float64}
.
from unroot.jl.
OK, forcing the return type of the _get_buffer_range
to be a UnitRange{Int64}
does the trick. Unfortunately .fEntries
can also be a Float64
in older TTree
versions...
from unroot.jl.
Related Issues (20)
- [RNTuple] support split delta encoding HOT 3
- Micro optimization for offset array HOT 1
- `DAOD_PHYSLITE` cannot be read HOT 7
- `lazytree` that takes either a file or a directory full of similar files HOT 2
- Failed to read triply jagged structure HOT 6
- xrootdgo exits the Julia session if the URL is not accessible HOT 6
- chaintrees broken on nightly HOT 1
- Unable to parse BASE error on TTree (TBaskets in TTree) HOT 28
- TTree v5 parsing issue
- Add type stability tests
- Unable to read `vector<float>` (regression in `v0.10.0`)
- `threadid()`-based buffers are unsafe under task migration
- How to test concurrency bug? HOT 2
- LRU cache preventing unmapping of ROOT files HOT 7
- [RNTuple] Missing zigzag encoding support
- Dangling TBasket not handled properly (offset index type wrong) HOT 2
- Opening `km3net_online.root` causes huge memory usage spike HOT 2
- `LazyTree()` hang regression in 0.10.16
- Pre-compilation failure after upgrading to v1.9.3 HOT 6
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 unroot.jl.