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
> 

Reply via email to