You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
In #1715 I modified how classes are loaded and all of the server side code uses ClassLoaderUtil.loadClass() 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.
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.
accumulo/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
Line 112 in 9b537ca
Versions (OS, Maven, Java, and others, as appropriate):
Expected behavior
Scans should be able to create iterator classes w/o obtaining a global classloader lock.
The text was updated successfully, but these errors were encountered: