accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dima Spivak (JIRA)" <j...@apache.org>
Subject [jira] [Created] (ACCUMULO-4469) ConcurrentModificationException while running MultiTable.xml node in Random Walk
Date Fri, 23 Sep 2016 01:26:20 GMT
Dima Spivak created ACCUMULO-4469:
-------------------------------------

             Summary: ConcurrentModificationException while running MultiTable.xml node in
Random Walk 
                 Key: ACCUMULO-4469
                 URL: https://issues.apache.org/jira/browse/ACCUMULO-4469
             Project: Accumulo
          Issue Type: Bug
          Components: test
    Affects Versions: 1.7.2
            Reporter: Dima Spivak


After the resolution of ACCUMULO-4467, I got back to playing with Random Walk and had a failure
caused by a {{ConcurrentModificationException}}:
{code}
23 01:03:04,316 [randomwalk.Framework] ERROR: Error during random walk
java.lang.Exception: Error running node MultiTable.xml
        at org.apache.accumulo.test.randomwalk.Module.visit(Module.java:346)
        at org.apache.accumulo.test.randomwalk.Framework.run(Framework.java:59)
        at org.apache.accumulo.test.randomwalk.Framework.main(Framework.java:119)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.apache.accumulo.start.Main$2.run(Main.java:157)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.ConcurrentModificationException
        at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
        at java.util.ArrayList$Itr.next(ArrayList.java:831)
        at org.apache.accumulo.test.randomwalk.multitable.MultiTableFixture.tearDown(MultiTableFixture.java:64)
        at org.apache.accumulo.test.randomwalk.Module.visit(Module.java:365)
        at org.apache.accumulo.test.randomwalk.Module$1.call(Module.java:283)
        at org.apache.accumulo.test.randomwalk.Module$1.call(Module.java:278)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at org.apache.accumulo.fate.util.LoggingRunnable.run(LoggingRunnable.java:35)
        ... 1 more
{code}
[This section of code|https://github.com/apache/accumulo/blob/master/test/src/main/java/org/apache/accumulo/test/randomwalk/multitable/MultiTableFixture.java#L61-L71]
seems to be at fault. In particular, it looks like we're getting the table list, but then
instead of doing a deep copy to a new {{ArrayList<String>}} from which we choose tables
to delete, we're looping through and deleting tables while referring to the changing list,
which has the effect of modifying it and making Java unhappy. Am I missing something more
complex or can I fix this one myself by just doing the aforementioned deep copy of the table
list? Or is a better way to go to use the {{TableOperations.list()}} method and iterate through
the {{SortedSet<String>}} it provides? Looks like this pattern is used in a few other




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message