[
https://issues.apache.org/jira/browse/IGNITE-2744?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15281470#comment-15281470
]
Vladimir Ozerov commented on IGNITE-2744:
-----------------------------------------
Looked at implementation again. I can neither accept, not reject it. My
concerns:
1) I can say nothing about changes to {{IgniteTxHandler}} as I am not familiar
with this piece of code.
2) {{IgniteTxRemoteStateImpl}} - looks readMap is always empty and is never
filled with any data. Is it true?
3) {{IgniteTxRemoteStateImpl}} - having separate concurrent HM seems too heavy
for me. Normally user will have 1 cache, rarely 2, very rare - more than 2.
Wrapped CHM looks like an overkill for me. We already produce too much garbage
and I do not want to add more. Can we do something like this (pseudocode)?
{code}
public void unwindEvicts(GridCacheSharedContext cctx) {
assert readMap == null || readMap.isEmpty();
int singleCacheId = -1;
Set<Integer> cacheIds = null;
for (IgniteTxKey writeKey : writeMap.keySet()) {
int cacheId = writeKey.cacheId();
// Have we already notified this cache?
if (cacheId == singleCacheId || cacheIds != null &&
!cacheIds.add(writeCacheId))
continue;
if (singleCacheId == -1)
singleCacheId = cacheId;
if (cacheIds == null) {
cacheIds = new HashSet<>(2);
cacheIds.add(cacheId);
}
GridCacheContext ctx = cctx.cacheContext(cacheId);
if (ctx != null)
CU.unwindEvicts(ctx);
}
}
{code}
> Optimize "unwindEvict" call in GridCacheIoManager.processMessage().
> -------------------------------------------------------------------
>
> Key: IGNITE-2744
> URL: https://issues.apache.org/jira/browse/IGNITE-2744
> Project: Ignite
> Issue Type: Task
> Components: cache
> Affects Versions: 1.5.0.final
> Reporter: Vladimir Ozerov
> Assignee: Vladimir Ozerov
> Priority: Critical
> Labels: performance
> Fix For: 1.6
>
>
> We call this method on every (!!!) received cache message. This call is
> pretty heavy as it iterates over all caches.
> We need to optimize it. E.g., check evicts only for the cache to which
> received message belongs. And iterate over the whole set only if we know for
> sure that several caches are affected (e.g. due to cross-cache TX).
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)