PDA

View Full Version : [Mondrian] RolapStar ThreadLocal<List<BitKey>>localAggregationRequests



Richard Emberson
04-03-2007, 07:00 PM
In RolapStar, should

private final ThreadLocal<List<BitKey>> localAggregationRequests =
new ThreadLocal<List<BitKey>>() {
protected List<BitKey> initialValue() {
return new ArrayList<BitKey>();
}
};

actually be:

private final ThreadLocal<Set<BitKey>> localAggregationRequests =
new ThreadLocal<Set<BitKey>>() {
protected Set<BitKey> initialValue() {
return new HashSet<BitKey>();
}
};

and then RolapStar clearAggregationRequests() would change from:

Set<BitKey> localAggregationRequestSet =
new HashSet<BitKey>(localAggregationRequests.get());
Iterator<BitKey> iter = aggregationRequests.iterator();
while (iter.hasNext()) {
BitKey bitKey = iter.next();
if (localAggregationRequestSet.contains(bitKey)) {
iter.remove();
// Make sure that bitKey is not removed more than once:
// other occurrences might exist for other threads.
localAggregationRequestSet.remove(bitKey);
if (localAggregationRequestSet.isEmpty()) {
// Nothing further to do
break;
}
}
}

to:

Iterator<BitKey> iter = aggregationRequests.iterator();
while (iter.hasNext()) {
BitKey bitKey = iter.next();
if (localAggregationRequests.contains(bitKey)) {
iter.remove();
// Make sure that bitKey is not removed more than once:
// other occurrences might exist for other threads.
localAggregationRequests.remove(bitKey);
if (localAggregationRequests.isEmpty()) {
// Nothing further to do
break;
}
}
}

Yes?

Richard


--
Quis custodiet ipsos custodes:
This email message is for the sole use of the intended recipient(s) and
may contain confidential information. Any unauthorized review, use,
disclosure or distribution is prohibited. If you are not the intended
recipient, please contact the sender by reply email and destroy all
copies of the original message.
_______________________________________________
Mondrian mailing list
Mondrian (AT) pentaho (DOT) org
http://lists.pentaho.org/mailman/listinfo/mondrian