You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by GitBox <gi...@apache.org> on 2020/10/08 21:54:17 UTC
[GitHub] [accumulo] keith-turner opened a new issue #1730: Scans experience contention on global classloader lock when creating iterators
keith-turner opened a new issue #1730:
URL: https://github.com/apache/accumulo/issues/1730
**Describe the bug**
In the past when running test against Accumulo w/ lots of concurrent scans and profiling tablets servers, the static synchronization around class loading was something that showed up in profiling data. Every scan uses class loaders to create iterators and this static synchronization causes locking contention between scans.
I think the following code is called to create iterator classes and is where the contention occurred.
https://github.com/apache/accumulo/blob/9b537ca679da7f435cd34f79bf2939991b0e02d5/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java#L112
**Versions (OS, Maven, Java, and others, as appropriate):**
- Affected version(s) of this project: [1.9.x,1.10.0,2.0.0]
**Expected behavior**
Scans should be able to create iterator classes w/o obtaining a global classloader lock.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
[GitHub] [accumulo] dlmarion commented on issue #1730: Scans experience contention on global classloader lock when creating iterators
Posted by GitBox <gi...@apache.org>.
dlmarion commented on issue #1730:
URL: https://github.com/apache/accumulo/issues/1730#issuecomment-714565022
In #1715 I modified how classes are loaded and all of the server side code uses [ClassLoaderUtil.loadClass()](https://github.com/apache/accumulo/pull/1715/files#diff-f8f44086240fb20a620240b6428fae288d4faf2851ddf348cf8e1c6e17edc693R25) which is not `synchonized`. If the table has a context defined, the `loadClass` operation is not `synchronized` either. Without a context the code still uses `AccumuloVFSClassLoader.loadClass` and will be `synchronized` until it's removal in a future release.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
users@infra.apache.org