mirror of
https://gitee.com/BDWare/cm
synced 2025-01-25 01:04:04 +00:00
feat: update DHTUtil
update DHTUtil.getClusterByKey to ignore prefix '04' of nodeIds
This commit is contained in:
parent
896cbfeb5b
commit
14e918fa18
@ -16,14 +16,14 @@ public class DHTUtil {
|
||||
if (nodes.length == 0) {
|
||||
return null;
|
||||
}
|
||||
if (nodes.length <= k) {
|
||||
if (nodes.length == 1) {
|
||||
return nodes;
|
||||
}
|
||||
|
||||
String hash = HashUtil.sha3ToFixedLen(key, nodes[0].length());
|
||||
String hash = HashUtil.sha3ToFixedLen(key, nodes[0].length() - 2);
|
||||
|
||||
int l = 0, r = nodes.length - 1, m,
|
||||
h2l = hash.compareTo(nodes[l]), r2h = nodes[r].compareTo(hash),
|
||||
h2l = hash.compareTo(nodes[l].substring(2)), r2h = nodes[r].substring(2).compareTo(hash),
|
||||
h2m;
|
||||
BigInteger bigH = null;
|
||||
String selected;
|
||||
@ -41,7 +41,7 @@ public class DHTUtil {
|
||||
if (l + 1 == r) {
|
||||
BigInteger bigL = getBigInteger(nodes[l]),
|
||||
bigR = getBigInteger(nodes[r]);
|
||||
bigH = new BigInteger(hash.substring(2));
|
||||
bigH = new BigInteger(hash);
|
||||
if (bigR.subtract(bigH).compareTo(bigH.subtract(bigL)) > -1) {
|
||||
selected = nodes[l];
|
||||
m = l;
|
||||
@ -52,7 +52,7 @@ public class DHTUtil {
|
||||
break;
|
||||
}
|
||||
m = (l + r) >> 1;
|
||||
h2m = hash.compareTo(nodes[m]);
|
||||
h2m = hash.compareTo(nodes[m].substring(2));
|
||||
if (h2m < 1) {
|
||||
r = m;
|
||||
r2h = -h2m;
|
||||
@ -76,7 +76,7 @@ public class DHTUtil {
|
||||
ret.add(nodes[l--]);
|
||||
} else {
|
||||
if (null == bigH) {
|
||||
bigH = new BigInteger(hash.substring(2));
|
||||
bigH = new BigInteger(hash);
|
||||
}
|
||||
if (getBigInteger(nodes[r]).subtract(bigH)
|
||||
.compareTo(bigH.subtract(getBigInteger(nodes[l]))) > -1) {
|
||||
|
Loading…
Reference in New Issue
Block a user