+1 (binding)

Enrico

Il giorno mar 29 mar 2022 alle ore 09:55 PengHui Li
<peng...@apache.org> ha scritto:
>
> +1,
>
> Penghui
>
> On Fri, Mar 25, 2022 at 10:13 AM mattison chao <mattisonc...@gmail.com>
> wrote:
>
> > This is the voting thread for PIP-149. It will stay open for at least 48
> > hours.
> >
> > https://github.com/apache/pulsar/issues/14365
> >
> > Pasted below for quoting convenience.
> >
> > -----
> >
> > Motivation
> >
> > The Rest API was originally designed to be implemented asynchronously, but
> > with the iteration of functions, some synchronous implementations were
> > added, resulting in many asynchronous methods called synchronous
> > implementations. Also, many synchronous calls do not add timeouts. This
> > greatly reduces concurrency, user operations, and experience.
> > In order to prevent more problems, and improve code readability and
> > maintainability, we intend to refactor these synchronous calls and
> > standardize the implementation of the API.
> >
> > Related discussion:
> > https://lists.apache.org/thread/pkkz2jgwtzpksp6d4rdm1pyxzb3z6vmg
> >
> > Goals
> >
> > Try to avoid synchronous method calls in asynchronous methods.
> > Async variable (AsyncResponse) is placed in the first parameter position.
> > Async variable (AsyncResponse) cannot be substituted into method
> > implementations.
> > Add more tests and increase the coverage.
> > Modification
> > Avoid synchronous method calls in asynchronous methods.
> >
> > protected void internalDeleteNamespace(boolean authoritative) {
> >    validateTenantOperation(namespaceName.getTenant(),
> > TenantOperation.DELETE_NAMESPACE);
> >    validatePoliciesReadOnlyAccess();
> > }
> > Suggest to do like this:
> >
> > protected CompletableFuture<Void> internalDeleteNamespace(boolean
> > authoritative) {
> >     return validateTenantOperationAsync(namespaceName.getTenant(),
> > TenantOperation.DELETE_NAMESPACE)
> >    .thenCompose(__ -> validatePoliciesReadOnlyAccessAsync());
> > }
> > Async variable (AsyncResponse) is placed in the first parameter position
> >
> > public void deleteNamespace(@Suspended final AsyncResponse asyncResponse,
> >          @PathParam("tenant") String tenant,
> >          @PathParam("namespace") String namespace,
> >          @QueryParam("force") @DefaultValue("false") boolean force,
> >          @QueryParam("authoritative") @DefaultValue("false") boolean
> > authoritative) {
> >
> > Async variable (AsyncResponse) cannot be substituted into method
> > implementations
> >
> > internalCreateNonPartitionedTopicAsync(asyncResponse, authoritative,
> > properties);
> > Suggest to do like this:
> >
> > internalCreateNonPartitionedTopicAsync(authoritative, properties)
> >         .thenAccept(__ ->
> > asyncResponse.resume(Response.noContent().build()))
> >         .exceptionally(ex -> {
> >             resumeAsyncResponseExceptionally(asyncResponse, ex.getCause());
> >             return null;
> >         });
> >
> > Task tracking
> > In order to unify the modification and track the modified part, it's better
> > to open an issue to track, like #14353, #14013, #13854.
> >
> > ---
> > Best,
> > Mattison
> >

Reply via email to