[ https://issues.apache.org/jira/browse/IGNITE-5551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16570160#comment-16570160 ]
Alexey Kukushkin commented on IGNITE-5551: ------------------------------------------ Set Priority to Minor. This fix will most likely NOT be committed since there is an effort in progress to re-design service grid. When the re-design effort is complete, I will review the code, make sure the new code has no similar issue and close this ticket. > Optimize service deployment assignments object > ---------------------------------------------- > > Key: IGNITE-5551 > URL: https://issues.apache.org/jira/browse/IGNITE-5551 > Project: Ignite > Issue Type: Improvement > Components: managed services > Affects Versions: 3.0 > Reporter: Alexey Goncharuk > Assignee: Alexey Kukushkin > Priority: Minor > Labels: iep-17 > Fix For: 2.7 > > > 1) The deployment assignment is stored using a map [node ID -> number of > assigned services]. However, this assignment is not very effective for cases > when service configuration is (maxPerCluster = 0, maxPerNode > 0), because in > this case, we can avoid assignment recalculation at all. The assignment for > this case may look like (eachNode=N). In this case, the assignment does not > change and we can effectively skip it during the reassign loop. > 2) We store zero assignment counters, which does not make sense at all - if > there are no service deployments for a node, there should be no corresponding > entry in the map at all. The size of assignments for (maxPerCluster > 0) > configurations is O(number of nodes in the cluster), but it should be > O(maxPerCluster). > 3) If an assignment did not change, we should not commit the assignment > transaction - this is redundant > 4) Perhaps, it also makes sense to calculate several assignments at once and > do a putAll commit instead of single puts - this should also decrease the > assignment calculation latency -- This message was sent by Atlassian JIRA (v7.6.3#76005)