mattisonchao commented on code in PR #20642:
URL: https://github.com/apache/pulsar/pull/20642#discussion_r1243230366
##########
pulsar-metadata/src/main/java/org/apache/pulsar/metadata/bookkeeper/PulsarRegistrationClient.java:
##########
@@ -227,35 +267,37 @@ public CompletableFuture<Versioned<BookieServiceInfo>>
getBookieServiceInfo(Book
// this is because there are a few cases in which some operations on
the main thread
// wait for the result. This is due to the fact that resolving the
address of a bookie
// is needed in many code paths.
- Versioned<BookieServiceInfo> resultFromCache =
bookieServiceInfoCache.get(bookieId);
+ Versioned<BookieServiceInfo> info;
+ if ((info = writableBookieInfo.get(bookieId)) == null) {
+ info = readOnlyBookieInfo.get(bookieId);
+ }
if (log.isDebugEnabled()) {
- log.debug("getBookieServiceInfo {} -> {}", bookieId,
resultFromCache);
+ log.debug("getBookieServiceInfo {} -> {}", bookieId, info);
}
- if (resultFromCache != null) {
- return CompletableFuture.completedFuture(resultFromCache);
+ if (info != null) {
+ return completedFuture(info);
} else {
return FutureUtils.exception(new
BKException.BKBookieHandleNotAvailableException());
}
}
- public CompletableFuture<Void> readBookieServiceInfoAsync(BookieId
bookieId) {
+ public CompletableFuture<Boolean> readBookieServiceInfoAsync(BookieId
bookieId) {
String asWritable = bookieRegistrationPath + "/" + bookieId;
return bookieServiceInfoMetadataCache.get(asWritable)
- .thenCompose((Optional<BookieServiceInfo> getResult) -> {
- if (getResult.isPresent()) {
- Versioned<BookieServiceInfo> res =
- new Versioned<>(getResult.get(), new
LongVersion(-1));
- log.info("Update BookieInfoCache (writable bookie) {}
-> {}", bookieId, getResult.get());
- bookieServiceInfoCache.put(bookieId, res);
- return CompletableFuture.completedFuture(null);
- } else {
- return readBookieInfoAsReadonlyBookie(bookieId);
- }
- }
- );
+ .thenApply((Optional<BookieServiceInfo> getResult) -> {
+ if (getResult.isPresent()) {
+ Versioned<BookieServiceInfo> res =
+ new Versioned<>(getResult.get(), new
LongVersion(-1));
Review Comment:
I put the version information in it. Because bk defined the interface as
follows.
```java
default CompletableFuture<Versioned<BookieServiceInfo>>
getBookieServiceInfo(BookieId bookieId)
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]