Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TTreeCache::FillBuffer spurrious error. #8048

Open
pcanal opened this issue Apr 29, 2021 · 2 comments · May be fixed by #8049
Open

TTreeCache::FillBuffer spurrious error. #8048

pcanal opened this issue Apr 29, 2021 · 2 comments · May be fixed by #8049

Comments

@pcanal
Copy link
Member

pcanal commented Apr 29, 2021

As seen in cms-sw/cmssw#33361, in some normal usage circumstances, TTreeCache::FillBuffer will issue an Error message (turned into an exception by CMSSW):

fCurrentClusterStart=11348 fEntryCurrent=11392 fNextClusterStart=11394
but fEntryCurrent should not be in between the two 
@pcanal pcanal added the bug label Apr 29, 2021
@pcanal
Copy link
Member Author

pcanal commented Apr 29, 2021

The error message is inaccurate, it did not take into account jagged filling of the TTreeCache. In this case, the cache was filled with a little more than one cluster and when it needs to do the next refill it restarted from the cluster start boundary of that partially downloaded cluster which is “indeed” within the range of the last TreeCache fill (i.e. the error).

@pcanal
Copy link
Member Author

pcanal commented Apr 29, 2021

We did not see the problem with a local file because the TTreeCache usage is different. CMSSW take note of whether prefetching (asynchronous reads) is available for a while or not. In the setup CMSSW has, the prefetching (asynchronous reads) is available for the local file but not for the network/remote file. In addition when prefetching (asynchronous reads) is not available, CMSSW uses multiple TTreeCache for a given TTree while it uses only one when prefetching (asynchronous reads) is available. This results in the pattern of filling to be different between the 2 cases.

pcanal added a commit to pcanal/root that referenced this issue Apr 29, 2021
See cms-sw/cmssw#33361

Fixes root-project#8048

Now, set the start point of the filling to be the end of the previous filling rather than the start of the current cluster (which can sometimes
be before the end of the previous filling)

Issue: The error message was inaccurate, it did not take into account jagged filling of the TTreeCache.  In this case, the cache was filled with a little more than one cluster and when it needs to do the next refill it restarted from the cluster start boundary of that partially downloaded cluster which is “indeed” within the range of the last TreeCache fill (i.e. the error).

We did not see the problem with a local file because the TTreeCache usage is different.  CMSSW take note of whether prefetching (asynchronous reads) is available for a while or not.  In the setup CMSSW has, the prefetching (asynchronous reads) is available for the local file but not for the network/remote file.  In addition when prefetching (asynchronous reads) is not available, CMSSW uses multiple TTreeCache for a given TTree while it uses only one when prefetching (asynchronous reads) is available.  This results in the pattern of filling to be different between the 2 cases.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants