[teiid-commits] teiid SVN: r1225 - trunk/engine/src/main/java/com/metamatrix/common/buffer/impl.

teiid-commits at lists.jboss.org teiid-commits at lists.jboss.org
Sun Aug 9 13:35:28 EDT 2009


Author: shawkins
Date: 2009-08-09 13:35:28 -0400 (Sun, 09 Aug 2009)
New Revision: 1225

Modified:
   trunk/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java
Log:
TEIID-761 fixing inefficient buffer algorithms

Modified: trunk/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java
===================================================================
--- trunk/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java	2009-08-09 04:10:31 UTC (rev 1224)
+++ trunk/engine/src/main/java/com/metamatrix/common/buffer/impl/BufferManagerImpl.java	2009-08-09 17:35:28 UTC (rev 1225)
@@ -948,16 +948,17 @@
 
                         // First update the reference tuple source.
                         if (!lob.getReferenceStreamId().equals(parentId.getStringID())) {
+                        	TupleGroupInfo groupInfo = getGroupInfo(parentId.getStringID());
                             TupleSourceID id = new TupleSourceID(lob.getReferenceStreamId());
                             TupleSourceInfo lobInfo = getTupleSourceInfo(id, false);
-                            lobInfo.setGroupInfo(getGroupInfo(parentId.getStringID()));
+                            reassignGroup(groupInfo, lobInfo);
                             
                             // if the lob moving parent has a assosiated persistent
                             // tuple source, then move that one to same parent too.
                             if (lob.getPersistenceStreamId() != null) {
                                 id = new TupleSourceID(lob.getPersistenceStreamId());
                                 lobInfo = getTupleSourceInfo(id, false);
-                                lobInfo.setGroupInfo(getGroupInfo(parentId.getStringID()));                                
+                                reassignGroup(groupInfo, lobInfo);                                
                             }                            
                         }
                     }
@@ -966,6 +967,17 @@
             }
         }
     }
+
+	private void reassignGroup(TupleGroupInfo groupInfo, TupleSourceInfo lobInfo) {
+		TupleGroupInfo tupleGroupInfo = lobInfo.getGroupInfo();
+		synchronized (tupleGroupInfo) {
+			tupleGroupInfo.getTupleSourceIDs().remove(lobInfo.getTupleSourceID());
+		}
+		lobInfo.setGroupInfo(groupInfo);
+		synchronized (groupInfo) {
+			groupInfo.getTupleSourceIDs().add(lobInfo.getTupleSourceID());
+		}
+	}
     
     private boolean lobIsNotKnownInTupleSourceMap( Streamable lob, TupleSourceID parentId) throws TupleSourceNotFoundException {
         /*



More information about the teiid-commits mailing list