Just like Lari mentioned, it's added in PIP-335. Actually I was +0 so
I didn't vote. AFAIK, StreamNative keeps evolving the Oxia so having
it as a built-in metadata store for now is not bad. I didn't have much
context about why it's contributed to the core Pulsar repo. I guess
the metadata store is still not completely decoupled. In future, we
can move some built-in metadata store implementations out of the core
repo (like the cpp/python clients, some connectors and adaptors) to
avoid making the core repo heavy.

Thanks,
Yunze

On Tue, Aug 13, 2024 at 1:37 AM Dave Fisher <w...@apache.org> wrote:
>
> 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