Author: mgrigorov
Date: Thu Jul 14 08:42:40 2011
New Revision: 1146600

URL: http://svn.apache.org/viewvc?rev=1146600&view=rev
Log:
WICKET-3900 AsynchronousDataStoreTest is failing randomly

Add a check for 'null' when iterating over the non-submitted tasks.
A task may be submitted during the iteration and in this case 
ThreadPoolExecutor#getQueue().iretator().next() may return null. 


Modified:
    
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousDataStore.java

Modified: 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousDataStore.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousDataStore.java?rev=1146600&r1=1146599&r2=1146600&view=diff
==============================================================================
--- 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousDataStore.java
 (original)
+++ 
wicket/trunk/wicket-core/src/main/java/org/apache/wicket/pageStore/AsynchronousDataStore.java
 Thu Jul 14 08:42:40 2011
@@ -88,12 +88,16 @@ public class AsynchronousDataStore imple
                for (Runnable runnable : savePagesExecutor.getQueue())
                {
                        StoreEntryRunnable storeEntryRunnable = 
(StoreEntryRunnable)runnable;
-                       Entry cursorEntry = storeEntryRunnable.getEntry();
-
-                       if (cursorEntry.getPageId() == pageId && 
cursorEntry.getSessionId().equals(sessionId))
+                       if (storeEntryRunnable != null)
                        {
-                               entry = cursorEntry;
-                               break;
+                               Entry cursorEntry = 
storeEntryRunnable.getEntry();
+
+                               if (cursorEntry.getPageId() == pageId &&
+                                       
cursorEntry.getSessionId().equals(sessionId))
+                               {
+                                       entry = cursorEntry;
+                                       break;
+                               }
                        }
                }
 
@@ -129,11 +133,15 @@ public class AsynchronousDataStore imple
                for (Runnable runnable : savePagesExecutor.getQueue())
                {
                        StoreEntryRunnable storeEntryRunnable = 
(StoreEntryRunnable)runnable;
-                       Entry cursorEntry = storeEntryRunnable.getEntry();
-
-                       if (cursorEntry.getPageId() == pageId && 
cursorEntry.getSessionId().equals(sessionId))
+                       if (storeEntryRunnable != null)
                        {
-                               savePagesExecutor.remove(runnable);
+                               Entry cursorEntry = 
storeEntryRunnable.getEntry();
+
+                               if (cursorEntry.getPageId() == pageId &&
+                                       
cursorEntry.getSessionId().equals(sessionId))
+                               {
+                                       savePagesExecutor.remove(runnable);
+                               }
                        }
                }
 
@@ -148,11 +156,14 @@ public class AsynchronousDataStore imple
                for (Runnable runnable : savePagesExecutor.getQueue())
                {
                        StoreEntryRunnable storeEntryRunnable = 
(StoreEntryRunnable)runnable;
-                       Entry cursorEntry = storeEntryRunnable.getEntry();
-
-                       if (cursorEntry.getSessionId().equals(sessionId))
+                       if (storeEntryRunnable != null)
                        {
-                               savePagesExecutor.remove(runnable);
+                               Entry cursorEntry = 
storeEntryRunnable.getEntry();
+
+                               if 
(cursorEntry.getSessionId().equals(sessionId))
+                               {
+                                       savePagesExecutor.remove(runnable);
+                               }
                        }
                }
 


Reply via email to