Updated Branches:
  refs/heads/master 66bfc8851 -> 68a6f64b4

WICKET-4820 Race condition in ResourceSettings: getResourceWatcher() is not 
thread safe


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/68a6f64b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/68a6f64b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/68a6f64b

Branch: refs/heads/master
Commit: 68a6f64b4269f517fd16e1b7412c364d4438c0e6
Parents: 66bfc88
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Wed Oct 17 17:35:53 2012 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Wed Oct 17 17:35:53 2012 +0200

----------------------------------------------------------------------
 .../wicket/settings/def/ResourceSettings.java      |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/68a6f64b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
 
b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
index b9789b7..3b9b9b7 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/settings/def/ResourceSettings.java
@@ -285,10 +285,16 @@ public class ResourceSettings implements IResourceSettings
        {
                if (resourceWatcher == null && start)
                {
-                       final Duration pollFrequency = 
getResourcePollFrequency();
-                       if (pollFrequency != null)
+                       synchronized (this)
                        {
-                               resourceWatcher = new 
ModificationWatcher(pollFrequency);
+                               if (resourceWatcher == null)
+                               {
+                                       final Duration pollFrequency = 
getResourcePollFrequency();
+                                       if (pollFrequency != null)
+                                       {
+                                               resourceWatcher = new 
ModificationWatcher(pollFrequency);
+                                       }
+                               }
                        }
                }
                return resourceWatcher;

Reply via email to