You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Sean Busbey (JIRA)" <ji...@apache.org> on 2016/10/18 19:08:58 UTC

[jira] [Commented] (ACCUMULO-4469) ConcurrentModificationException while running MultiTable.xml node in Random Walk

    [ https://issues.apache.org/jira/browse/ACCUMULO-4469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15586370#comment-15586370 ] 

Sean Busbey commented on ACCUMULO-4469:
---------------------------------------

qq [~dimaspivak], would you like to be listed on our [page of contributors|http://accumulo.apache.org/people]? If so, do you want your employer listed? Timezone?

> 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
>            Assignee: Dima Spivak
>             Fix For: 1.7.3, 1.8.1, 2.0.0
>
>         Attachments: ACCUMULO-4469_1.7_v1.patch
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> 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 use the {{TableOperations.list()}} method and iterate through the {{SortedSet<String>}} it provides?



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