Hi Yunze, Given your comment on the DISCUSSION thread abut the extra repository.
> - Metadata store. From my personal perspective, I don't suggest making > InMemory, Etcd, Oxia as the built-in implementations. Having ZK as > default and RocksDB for a lightweight standalone is enough. I have to ask the hypothetical question: Why is the project working on StreamNative Oxia support? (https://github.com/streamnative/oxia) Since we are then we should make it just as easy to work on any metadata store plugin. Best, Dave > On Aug 12, 2024, at 1:57 AM, poorbarcode (via GitHub) <g...@apache.org> wrote: > > > poorbarcode opened a new pull request, #23154: > URL: https://github.com/apache/pulsar/pull/23154 > > ### Motivation & Modifications > > Once the Oxia's operation fails to execute, you will get many kinds of > errors, such as `io.grpc.StatusRuntimeException`, which is not expected, we > should convert these exceptions to `MetadataStoreException` > > ``` > Aug 12, 2024 4:52:07 PM com.github.benmanes.caffeine.cache.LocalAsyncCache > lambda$handleCompletion$7 > WARNING: Exception thrown during asynchronous load > java.util.concurrent.CompletionException: io.grpc.StatusRuntimeException: > UNAVAILABLE: io exception > at > java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332) > at > java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:347) > at > java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:874) > at > java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) > at > java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) > at > java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2162) > at io.streamnative.oxia.client.batch.Operation.fail(Operation.java:56) > at > io.streamnative.oxia.client.batch.ReadBatch.lambda$onError$0(ReadBatch.java:80) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) > at > io.streamnative.oxia.client.batch.ReadBatch.onError(ReadBatch.java:80) > at > io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:491) > at > io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:567) > at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:71) > at > io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInternal(ClientCallImpl.java:735) > at > io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:716) > at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) > at > io.grpc.internal.SerializeReentrantCallsDirectExecutor.execute(SerializeReentrantCallsDirectExecutor.java:49) > at > io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closedInternal(ClientCallImpl.java:743) > at > io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.closed(ClientCallImpl.java:683) > at > io.grpc.internal.FailingClientStream.start(FailingClientStream.java:61) > at > io.grpc.internal.ClientCallImpl.startInternal(ClientCallImpl.java:291) > at io.grpc.internal.ClientCallImpl.start(ClientCallImpl.java:193) > at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:345) > at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:319) > at io.grpc.stub.ClientCalls.asyncUnaryRequestCall(ClientCalls.java:307) > at > io.grpc.stub.ClientCalls.asyncServerStreamingCall(ClientCalls.java:91) > at > io.streamnative.oxia.proto.OxiaClientGrpc$OxiaClientStub.read(OxiaClientGrpc.java:558) > at io.streamnative.oxia.client.batch.ReadBatch.send(ReadBatch.java:62) > at > io.streamnative.oxia.client.batch.Batcher.batcherLoop(Batcher.java:125) > at > io.grpc.netty.shaded.io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.base/java.lang.Thread.run(Thread.java:833) > Caused by: io.grpc.StatusRuntimeException: UNAVAILABLE: io exception > at io.grpc.Status.asRuntimeException(Status.java:539) > ... 21 more > ``` > > > > ### Documentation > > <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. --> > > - [ ] `doc` <!-- Your PR contains doc changes. --> > - [ ] `doc-required` <!-- Your PR changes impact docs and you will update > later --> > - [x] `doc-not-needed` <!-- Your PR changes do not impact docs --> > - [ ] `doc-complete` <!-- Docs have been already added --> > > ### Matching PR in forked repository > > PR in forked repository: x > > > -- > 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: commits-unsubscr...@pulsar.apache.org > > For queries about this service, please contact Infrastructure at: > us...@infra.apache.org >