You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ju...@apache.org on 2018/11/05 21:35:43 UTC
[jspwiki] 07/21: avoid concurrency issue by building a new Set,
remove close it's called implicitly
This is an automated email from the ASF dual-hosted git repository.
juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git
commit db3f7f158d47aace27eae819a027a705c483988f
Author: juanpablo <ju...@apache.org>
AuthorDate: Sun Nov 4 01:30:04 2018 +0100
avoid concurrency issue by building a new Set, remove close it's called implicitly
---
.../java/org/apache/wiki/ReferenceManager.java | 24 ++++++----------------
1 file changed, 6 insertions(+), 18 deletions(-)
diff --git a/jspwiki-main/src/main/java/org/apache/wiki/ReferenceManager.java b/jspwiki-main/src/main/java/org/apache/wiki/ReferenceManager.java
index eebfa08..097335b 100644
--- a/jspwiki-main/src/main/java/org/apache/wiki/ReferenceManager.java
+++ b/jspwiki-main/src/main/java/org/apache/wiki/ReferenceManager.java
@@ -482,10 +482,8 @@ public class ReferenceManager
//
f = new File( f, hashName );
- try( ObjectOutputStream out = new ObjectOutputStream( new BufferedOutputStream(new FileOutputStream(f)) ) )
- {
- // FIXME: There is a concurrency issue here...
- Set< Map.Entry < String, Object > > entries = p.getAttributes().entrySet();
+ try( ObjectOutputStream out = new ObjectOutputStream( new BufferedOutputStream( new FileOutputStream( f ) ) ) ) {
+ Set< Map.Entry < String, Object > > entries = new HashSet<>( p.getAttributes().entrySet() ); // new Set to avoid concurrency issue
if( entries.size() == 0 )
{
@@ -502,29 +500,19 @@ public class ReferenceManager
out.writeUTF( p.getName() );
out.writeLong( entries.size() );
- for( Iterator< Map.Entry < String, Object > > i = entries.iterator(); i.hasNext(); )
- {
+ for( Iterator< Map.Entry < String, Object > > i = entries.iterator(); i.hasNext(); ) {
Map.Entry< String, Object > e = i.next();
- if( e.getValue() instanceof Serializable )
- {
+ if( e.getValue() instanceof Serializable ) {
out.writeUTF( e.getKey() );
out.writeObject( e.getValue() );
}
}
- out.close();
-
- }
- catch( IOException e )
- {
+ } catch( IOException e ) {
log.error( "Unable to serialize!", e );
-
- }
- finally
- {
+ } finally {
sw.stop();
-
log.debug("serialization for "+p.getName()+" done - took "+sw);
}
}