This is an automated email from the ASF dual-hosted git repository.
yong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new 04efcca7eb Fix: NPE in RackawareEnsemblePlacementPolicyImpl logged by
AutoRecovery (#3350)
04efcca7eb is described below
commit 04efcca7ebbdf22395ac905e0f3a79f41ac3217e
Author: Andrey Yegorov <[email protected]>
AuthorDate: Tue Jul 5 17:57:52 2022 -0700
Fix: NPE in RackawareEnsemblePlacementPolicyImpl logged by AutoRecovery
(#3350)
### Motivation
AR keeps on logging NPE during rereplication:
```
[ReplicationWorker] WARN
org.apache.bookkeeper.client.RackawareEnsemblePlacementPolicyImpl - Received
exception while trying to get network location of bookie: ...
java.lang.NullPointerException: null
```
The NPE seems to be easily avoidable, no need to throw exception and log it
just to ignore.
### Changes
Added check for bookie being present in the knownBookies map before
accessing it.
---
.../client/RackawareEnsemblePlacementPolicyImpl.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
index 46c5a10786..1647deb666 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/client/RackawareEnsemblePlacementPolicyImpl.java
@@ -1026,7 +1026,11 @@ public class RackawareEnsemblePlacementPolicyImpl
extends TopologyAwareEnsembleP
for (int j = 0; j < writeQuorumSize; j++) {
bookie = ensembleList.get((i + j) % ensembleSize);
try {
-
racksInQuorum.add(knownBookies.get(bookie).getNetworkLocation());
+ if (knownBookies.containsKey(bookie)) {
+
racksInQuorum.add(knownBookies.get(bookie).getNetworkLocation());
+ } else {
+ LOG.debug("bookie {} is not in the list of
knownBookies", bookie);
+ }
} catch (Exception e) {
/*
* any issue/exception in analyzing whether ensemble is
@@ -1055,7 +1059,11 @@ public class RackawareEnsemblePlacementPolicyImpl
extends TopologyAwareEnsembleP
readLock.lock();
try {
for (BookieId bookie : ackedBookies) {
- rackCounter.add(knownBookies.get(bookie).getNetworkLocation());
+ if (knownBookies.containsKey(bookie)) {
+
rackCounter.add(knownBookies.get(bookie).getNetworkLocation());
+ } else {
+ LOG.debug("bookie {} is not in the list of knownBookies",
bookie);
+ }
}
// Check to make sure that ensemble is writing to
`minNumberOfRacks`'s number of racks at least.