[Fedora-commons-users] Concurrency problem with upload

1 view
Skip to first unread message

Antony Corfield [awc]

unread,
Jul 10, 2008, 5:37:26 AM7/10/08
to fedora-commo...@lists.sourceforge.net, fedora-com...@lists.sourceforge.net
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

Reply all
Reply to author
Forward
0 new messages