Hi, I've been running some tests depositing zip files using SWORD. When I hit the server with 50 concurrent threads (unlikely in reality!) I get the following error in the fedora code.
java.util.ConcurrentModificationException
at java.util.Hashtable$Enumerator.next(Hashtable.java:1031)
at fedora.server.management.DefaultManagement.putTempStream(DefaultManagement.java:1395)
at fedora.server.management.UploadServlet.saveAndGetId(UploadServlet.java:149)
at fedora.server.management.UploadServlet.doPost(UploadServlet.java:99)
Here's a simple patch (Fedora 3.0b1) for fedora.server.management.UploadServlet that fixes this problem.
Same problem in Fedora 2.2.1 and other versions I guess.
Index: C:/Users/awc/eclipse/fedora_release-3.0b1/src/java/fedora/server/management/UploadServlet.java
===================================================================
--- C:/Users/awc/eclipse/fedora_release-3.0b1/src/java/fedora/server/management/UploadServlet.java (revision 6592)
+++ C:/Users/awc/eclipse/fedora_release-3.0b1/src/java/fedora/server/management/UploadServlet.java (working copy)
@@ -129,8 +129,10 @@
}
private String saveAndGetId(Context context, FilePart filePart)
- throws ServerException, IOException {
- return s_management.putTempStream(context, filePart.getInputStream());
+ throws ServerException, IOException {
+ synchronized (s_management) {
+ return s_management.putTempStream(context, filePart.getInputStream());
+ }
}
/**
Regards,
Antony
--
Antony Corfield
ROAD Project
http://road.aber.ac.uk
tel. 01970 628724