[ https://issues.apache.org/jira/browse/IGNITE-5551?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexey Kukushkin resolved IGNITE-5551. -------------------------------------- Resolution: Duplicate Fixed as part of IGNITE-9607 > 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 > Time Spent: 20m > Remaining Estimate: 0h > > 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 (v8.3.4#803005)