| | |
| | | /** |
| | | * Count the number of changes in the replication changelog for the provided |
| | | * serverID, between 2 provided CSNs. |
| | | * @param serverId Identifier of the server for which to compute the count. |
| | | * @param from lower limit CSN. |
| | | * @param to upper limit CSN. |
| | | * @return the number of changes. |
| | | */ |
| | | public long getCount(CSN from, CSN to) |
| | | public long getCount(int serverId, CSN from, CSN to) |
| | | { |
| | | return domainDB.getCount(baseDN, from, to); |
| | | return domainDB.getCount(baseDN, serverId, from, to); |
| | | } |
| | | |
| | | /** |
| | |
| | | for (CSN csn : getLatestServerState()) |
| | | { |
| | | CSN startCSN = startState.getCSN(csn.getServerId()); |
| | | long serverIdRes = getCount(startCSN, endCSN); |
| | | long serverIdRes = getCount(csn.getServerId(), startCSN, endCSN); |
| | | |
| | | // The startPoint is excluded when counting the ECL eligible changes |
| | | if (startCSN != null && serverIdRes > 0) |
| | |
| | | long res = 0; |
| | | for (CSN csn : getLatestServerState()) |
| | | { |
| | | int serverId = csn.getServerId(); |
| | | CSN lStartCSN = |
| | | new CSN(startCSN.getTime(), startCSN.getSeqnum(), csn.getServerId()); |
| | | res += getCount(lStartCSN, endCSN); |
| | | new CSN(startCSN.getTime(), startCSN.getSeqnum(), serverId); |
| | | res += getCount(serverId, lStartCSN, endCSN); |
| | | } |
| | | return res; |
| | | } |
| | |
| | | * </ol> |
| | | * <h6>Example</h6> |
| | | * <p> |
| | | * Given the following replica database for baseDN "dc=example,dc=com": |
| | | * Given the following replica database for baseDN "dc=example,dc=com" and |
| | | * serverId 1: |
| | | * |
| | | * <pre> |
| | | * CSN1 <= Oldest |
| | |
| | | * Then: |
| | | * |
| | | * <pre> |
| | | * assertEquals(getCount("dc=example,dc=com", CSN1, CSN1), 1); |
| | | * assertEquals(getCount("dc=example,dc=com", CSN1, CSN2), 2); |
| | | * assertEquals(getCount("dc=example,dc=com", CSN1, CSN5), 5); |
| | | * assertEquals(getCount("dc=example,dc=com", null, CSN5), 5); |
| | | * assertEquals(getCount("dc=example,dc=com", CSN1, null), 0); |
| | | * assertEquals(getCount("dc=example,dc=com", null, null), 5); |
| | | * assertEquals(getCount("dc=example,dc=com", 1, CSN1, CSN1), 1); |
| | | * assertEquals(getCount("dc=example,dc=com", 1, CSN1, CSN2), 2); |
| | | * assertEquals(getCount("dc=example,dc=com", 1, CSN1, CSN5), 5); |
| | | * assertEquals(getCount("dc=example,dc=com", 1, null, CSN5), 5); |
| | | * assertEquals(getCount("dc=example,dc=com", 1, CSN1, null), 0); |
| | | * assertEquals(getCount("dc=example,dc=com", 1, null, null), 5); |
| | | * </pre> |
| | | * |
| | | * @param baseDN |
| | | * the replication domain baseDN |
| | | * @param serverId |
| | | * the serverId on which to act |
| | | * @param from |
| | | * The older CSN where to start the count |
| | | * @param to |
| | | * The newer CSN where to end the count |
| | | * @return The computed number of changes |
| | | */ |
| | | long getCount(DN baseDN, CSN from, CSN to); |
| | | long getCount(DN baseDN, int serverId, CSN from, CSN to); |
| | | |
| | | /** |
| | | * Returns the {@link CSN} situated immediately after the specified |
| | |
| | | |
| | | /** {@inheritDoc} */ |
| | | @Override |
| | | public long getCount(DN baseDN, CSN from, CSN to) |
| | | public long getCount(DN baseDN, int serverId, CSN from, CSN to) |
| | | { |
| | | JEReplicaDB replicaDB = getReplicaDB(baseDN, from.getServerId()); |
| | | JEReplicaDB replicaDB = getReplicaDB(baseDN, serverId); |
| | | if (replicaDB != null) |
| | | { |
| | | return replicaDB.getCount(from, to); |