Author: schor
Date: Sat Apr 26 11:39:17 2014
New Revision: 1590227

URL: http://svn.apache.org/r1590227
Log:
[UIMA-3774] handle case of table resize while waiting slightly better

Modified:
    
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java

Modified: 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java
URL: 
http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java?rev=1590227&r1=1590226&r2=1590227&view=diff
==============================================================================
--- 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java
 (original)
+++ 
uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/jcas/impl/JCasHashMap.java
 Sat Apr 26 11:39:17 2014
@@ -204,13 +204,16 @@ public class JCasHashMap {
             while (((TOP) maybe).jcasType == null) {
               // we hit a reserve marker - there is another thread in the 
process of creating an instance of this,
               // so wait for it to finish and then return it
+              final int sizeNow = size;
               try {
                 wait();  // releases the synchronized monitor, otherwise this 
segment blocked for others while waiting
               } catch (InterruptedException e) {
               }
-              // at this point, the table may have grown
-              // so start over
-              continue retryAfterWait;
+              if (size != sizeNow) {
+                // at this point, the table may have grown
+                // so start over
+                continue retryAfterWait;
+              }
             }
             if (TUNE) {
               histogram[Math.min(histogram.length - 1, nbrProbes)]++;


Reply via email to