| | |
| | | import java.io.IOException; |
| | | import java.io.UnsupportedEncodingException; |
| | | import java.util.*; |
| | | import java.util.Map.Entry; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.ConcurrentLinkedQueue; |
| | | import java.util.concurrent.TimeUnit; |
| | |
| | | */ |
| | | public ServerState getLatestServerState() |
| | | { |
| | | return toServerState(changelogDB.getDomainNewestCSNs(baseDN).values()); |
| | | } |
| | | |
| | | private ServerState toServerState(Collection<CSN> csns) |
| | | { |
| | | ServerState serverState = new ServerState(); |
| | | for (CSN csn : csns) |
| | | { |
| | | serverState.update(csn); |
| | | } |
| | | return serverState; |
| | | return changelogDB.getDomainNewestCSNs(baseDN); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public ServerState getStartState() |
| | | { |
| | | return toServerState(changelogDB.getDomainOldestCSNs(baseDN).values()); |
| | | return changelogDB.getDomainOldestCSNs(baseDN); |
| | | } |
| | | |
| | | /** |
| | |
| | | { |
| | | CSN eligibleCSN = null; |
| | | |
| | | for (Entry<Integer, CSN> entry : |
| | | changelogDB.getDomainNewestCSNs(baseDN).entrySet()) |
| | | final ServerState newestCSNs = changelogDB.getDomainNewestCSNs(baseDN); |
| | | for (final int serverId : newestCSNs) |
| | | { |
| | | // Consider this producer (DS/db). |
| | | final int serverId = entry.getKey(); |
| | | final CSN changelogNewestCSN = entry.getValue(); |
| | | final CSN changelogNewestCSN = newestCSNs.getCSN(serverId); |
| | | |
| | | // Should it be considered for eligibility ? |
| | | CSN heartbeatLastCSN = |