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 {
/*
Show replies by date