[teiid-commits] teiid SVN: r3530 - in trunk/engine/src: test/java/org/teiid/query/processor and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Wed Oct 5 12:05:39 EDT 2011


Author: shawkins
Date: 2011-10-05 12:05:38 -0400 (Wed, 05 Oct 2011)
New Revision: 3530

Modified:
   trunk/engine/src/main/java/org/teiid/query/tempdata/TempTable.java
   trunk/engine/src/test/java/org/teiid/query/processor/TestTempTables.java
Log:
TEIID-1768 fix for invalid locking

Modified: trunk/engine/src/main/java/org/teiid/query/tempdata/TempTable.java
===================================================================
--- trunk/engine/src/main/java/org/teiid/query/tempdata/TempTable.java	2011-10-05 15:32:08 UTC (rev 3529)
+++ trunk/engine/src/main/java/org/teiid/query/tempdata/TempTable.java	2011-10-05 16:05:38 UTC (rev 3530)
@@ -230,7 +230,6 @@
 		
 		int process() throws ExpressionEvaluationException, TeiidComponentException, TeiidProcessingException {
 			int reserved = reserveBuffers();
-			boolean held = lock.writeLock().isHeldByCurrentThread();
 			lock.writeLock().lock();
 			boolean success = false;
 			try {
@@ -265,9 +264,7 @@
 					}
 				} finally {
 					bm.releaseBuffers(reserved);
-					if (!held) {
-						lock.writeLock().unlock();
-					}
+					lock.writeLock().unlock();
 					close();
 				}
 			}

Modified: trunk/engine/src/test/java/org/teiid/query/processor/TestTempTables.java
===================================================================
--- trunk/engine/src/test/java/org/teiid/query/processor/TestTempTables.java	2011-10-05 15:32:08 UTC (rev 3529)
+++ trunk/engine/src/test/java/org/teiid/query/processor/TestTempTables.java	2011-10-05 16:05:38 UTC (rev 3530)
@@ -277,6 +277,19 @@
 		}
 		//should revert back to original
 		execute("select count(*) from x", new List[] {Arrays.asList(2)}); //$NON-NLS-1$
+		
+		Thread t = new Thread() {
+			public void run() {
+				try {
+					execute("select count(e1) from x", new List[] {Arrays.asList(2)});
+				} catch (Exception e) {
+					e.printStackTrace();
+				} 
+			}
+		};
+		t.start();
+		t.join(2000);
+		assertFalse(t.isAlive());
 	}
 	
 	@Test public void testAtomicDelete() throws Exception {



More information about the teiid-commits mailing list