Menu

#114 ConcurrentModificationException in clickLinkWithExactText(..

Release_2.2
open
nobody
5
2014-08-06
2009-08-05
No

Using JWebUnit 2.2 (via Maven) in our test suite, I recently encountered a test failure with this stack trace:

java.util.ConcurrentModificationException
at java.util.AbstractList$Itr.checkForComodification(AbstractList.java:372)
at java.util.AbstractList$Itr.next(AbstractList.java:343)
at org.apache.commons.collections.iterators.AbstractIteratorDecorator.next(AbstractIteratorDecorator.java:67)
at org.apache.commons.collections.map.ListOrderedMap$ListOrderedIterator.next(ListOrderedMap.java:605)
at org.apache.commons.collections.iterators.AbstractIteratorDecorator.next(AbstractIteratorDecorator.java:67)
at org.apache.commons.collections.map.ListOrderedMap$KeySetView$1.next(ListOrderedMap.java:518)
at com.gargoylesoftware.htmlunit.html.DomElement.printOpeningTagContentAsXml(DomElement.java:144)
at com.gargoylesoftware.htmlunit.html.HtmlElement.toString(HtmlElement.java:553)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.gargoylesoftware.htmlunit.javascript.host.HTMLElement.toString(HTMLElement.java:1719)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.gargoylesoftware.htmlunit.javascript.host.Event.toString(Event.java:602)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:115)
at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:931)
at com.gargoylesoftware.htmlunit.html.HtmlPage.executeEventHandlersIfNeeded(HtmlPage.java:1237)
at com.gargoylesoftware.htmlunit.html.HtmlPage.initialize(HtmlPage.java:179)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:449)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:329)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:354)
at com.gargoylesoftware.htmlunit.html.HtmlAnchor.doClickAction(HtmlAnchor.java:100)
at com.gargoylesoftware.htmlunit.html.HtmlAnchor.doClickAction(HtmlAnchor.java:121)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1329)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1288)
at com.gargoylesoftware.htmlunit.html.HtmlElement.click(HtmlElement.java:1257)
at net.sourceforge.jwebunit.htmlunit.HtmlUnitTestingEngineImpl.clickLinkWithExactText(HtmlUnitTestingEngineImpl.java:1684)
at net.sourceforge.jwebunit.junit.WebTester.clickLinkWithExactText(WebTester.java:2501)
at net.sourceforge.jwebunit.junit.WebTestCase.clickLinkWithExactText(WebTestCase.java:2001)

It's a one-off so far, but it seems there is a race condition either in your code or upstream. Our tests are very straightforward and don't use threads, so I feel reasonably confident it is not our fault.

Discussion

  • Philip Potter

    Philip Potter - 2014-08-06

    I just hit what looks like the same bug. Here's my stacktrace (snipped at the point it gets called):

    java.util.ConcurrentModificationException
        at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:394)
        at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:413)
        at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:412)
        at com.gargoylesoftware.htmlunit.html.DomElement.printOpeningTagContentAsXml(DomElement.java:144)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.toString(HtmlElement.java:614)
        at java.lang.String.valueOf(String.java:2847)
        at java.lang.StringBuilder.append(StringBuilder.java:128)
        at com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement.toString(HTMLElement.java:1749)
        at java.lang.String.valueOf(String.java:2847)
        at java.lang.StringBuilder.append(StringBuilder.java:128)
        at com.gargoylesoftware.htmlunit.javascript.host.Event.toString(Event.java:686)
        at java.lang.String.valueOf(String.java:2847)
        at java.lang.StringBuilder.append(StringBuilder.java:128)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.fireEvent(HtmlElement.java:864)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.type(HtmlElement.java:482)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.type(HtmlElement.java:431)
        at com.gargoylesoftware.htmlunit.html.HtmlElement.type(HtmlElement.java:400)
        at org.openqa.selenium.htmlunit.HtmlUnitKeyboard.sendKeys(HtmlUnitKeyboard.java:70)
        at org.openqa.selenium.htmlunit.HtmlUnitWebElement.sendKeys(HtmlUnitWebElement.java:343)
    

    HtmlUnitWebElement.sendkeys is where my user code called into htmlunit.

    Running the same test again did not reproduce the error.

     
  • Philip Potter

    Philip Potter - 2014-08-06

    oh and the gradle dependencies we are using are: 'org.seleniumhq.selenium:selenium-java:2.33.0', 'org.seleniumhq.selenium:selenium-htmlunit-driver:2.33.0'

     
  • Philip Potter

    Philip Potter - 2014-08-06

    Hmm, looking at this, I'm not using jwebunit at all; perhaps this is an htmlunit bug?

    EDIT: filed bug upstream

     

    Last edit: Philip Potter 2014-08-06

Log in to post a comment.

MongoDB Logo MongoDB