[teiid-commits] teiid SVN: r3528 - in branches/7.4.x/engine/src: test/java/org/teiid/query/processor and 1 other directory.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Tue Oct 4 23:14:18 EDT 2011


Author: shawkins
Date: 2011-10-04 23:14:18 -0400 (Tue, 04 Oct 2011)
New Revision: 3528

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

Modified: branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTable.java
===================================================================
--- branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTable.java	2011-10-04 19:38:57 UTC (rev 3527)
+++ branches/7.4.x/engine/src/main/java/org/teiid/query/tempdata/TempTable.java	2011-10-05 03:14:18 UTC (rev 3528)
@@ -210,7 +210,6 @@
 		
 		int process() throws ExpressionEvaluationException, TeiidComponentException, TeiidProcessingException {
 			int reserved = reserveBuffers();
-			boolean held = lock.writeLock().isHeldByCurrentThread();
 			lock.writeLock().lock();
 			boolean success = false;
 			try {
@@ -240,9 +239,7 @@
 				} catch (TeiidException e) {
 					LogManager.logError(LogConstants.CTX_DQP, e, e.getMessage());
 				} finally {
-					if (!held) {
-						lock.writeLock().unlock();
-					}
+					lock.writeLock().unlock();
 					close();
 				}
 			}

Modified: branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java
===================================================================
--- branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java	2011-10-04 19:38:57 UTC (rev 3527)
+++ branches/7.4.x/engine/src/test/java/org/teiid/query/processor/TestTempTables.java	2011-10-05 03:14:18 UTC (rev 3528)
@@ -140,6 +140,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