You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@felix.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2014/08/20 15:32:27 UTC
[jira] [Created] (FELIX-4609) Possible
ConcurrentModificationException in WatcherScanner
Daniel Kulp created FELIX-4609:
----------------------------------
Summary: Possible ConcurrentModificationException in WatcherScanner
Key: FELIX-4609
URL: https://issues.apache.org/jira/browse/FELIX-4609
Project: Felix
Issue Type: Bug
Components: File Install
Affects Versions: fileinstall-3.4.0
Reporter: Daniel Kulp
In some cases at startup, I'm getting:
{code}
12:02:06,941 | ERROR | OT/container/etc | ? ? | 6 - org.apache.felix.fileinstall - 3.4.0 | In main loop, we have serious trouble
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:922)[:1.7.0_67]
at java.util.HashMap$KeyIterator.next(HashMap.java:956)[:1.7.0_67]
at org.apache.felix.fileinstall.internal.WatcherScanner.scan(WatcherScanner.java:70)[6:org.apache.felix.fileinstall:3.4.0]
at org.apache.felix.fileinstall.internal.DirectoryWatcher.run(DirectoryWatcher.java:305)[6:org.apache.felix.fileinstall:3.4.0]
{code}
The problem looks to stem from line 83 of WatcherScanner. The "changed" HashSet is being modified (remove call) within the for loop that is iterating over it.
Most likely, a small change of:
{code}
Index: WatcherScanner.java
===================================================================
--- WatcherScanner.java (revision 1619096)
+++ WatcherScanner.java (working copy)
@@ -78,10 +78,8 @@
if ((newChecksum == lastChecksum || reportImmediately)) {
if (newChecksum != storedChecksum) {
storedChecksums.put(file, newChecksum);
- files.add(file);
- } else {
- changed.remove(file);
}
+ files.add(file);
if (reportImmediately) {
removed.remove(file);
}
{code}
will fix it, but untested at this point.
--
This message was sent by Atlassian JIRA
(v6.2#6252)