Skip to content

Cannot use schemaRegistry with multiple URL #583

@scanchon

Description

@scanchon

Describe the bug
From the documentation, we should be able to specify a list of schema registry url separated by a comma:

# Comma-separated list of URLs for schema registry instances that can be used to register or look up schemas

But I'm not able to have it working (but maybe I'm doing something wrong ?).

To Reproduce
Create a Jikkou config with multiple urls for schema registry, like:

jikkou {
  schemaRegistry {
    url = "http://host-a:8081,http://host-b:8081"
  }
}

Then try to use it

$ jikkou get schemaregistrysubjects
io.streamthoughts.jikkou.core.exceptions.JikkouRuntimeException: Failed to list all schema registry subject versions
        at io.streamthoughts.jikkou.schema.registry.reconciler.SchemaRegistrySubjectCollector.listAll(SchemaRegistrySubjectCollector.java:114)
        at io.streamthoughts.jikkou.schema.registry.reconciler.SchemaRegistrySubjectCollector.listAll(SchemaRegistrySubjectCollector.java:84)
        at io.streamthoughts.jikkou.core.DefaultApi.listResources(DefaultApi.java:569)
        at io.streamthoughts.jikkou.client.command.get.GetResourceCommand.call(GetResourceCommand.java:74)
        at io.streamthoughts.jikkou.client.command.get.GetResourceCommand.call(GetResourceCommand.java:29)
        at picocli.CommandLine.executeUserObject(CommandLine.java:2045)
        at picocli.CommandLine.access$1500(CommandLine.java:148)
        at picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2465)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2457)
        at picocli.CommandLine$RunLast.handle(CommandLine.java:2419)
        at picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2277)
        at picocli.CommandLine$RunLast.execute(CommandLine.java:2421)
        at io.streamthoughts.jikkou.client.Jikkou.executionStrategy(Jikkou.java:150)
        at picocli.CommandLine.execute(CommandLine.java:2174)
        at io.streamthoughts.jikkou.client.Jikkou.execute(Jikkou.java:140)
        at io.streamthoughts.jikkou.client.Jikkou.main(Jikkou.java:128)
        at java.base@21.0.2/java.lang.invoke.LambdaForm$DMH/sa346b79c.invokeStaticInit(LambdaForm$DMH)
Caused by: io.streamthoughts.jikkou.http.client.RestClientException: Error at index 4 in: "8081,http:"
        at io.streamthoughts.jikkou.http.client.internal.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:122)
        at jdk.proxy4/jdk.proxy4.$Proxy63.listSubjects(Unknown Source)
        at reactor.core.publisher.MonoCallable.call(MonoCallable.java:72)
        at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:128)
        at reactor.core.publisher.MonoFlatMapMany.subscribeOrReturn(MonoFlatMapMany.java:49)
        at reactor.core.publisher.Mono.subscribe(Mono.java:4552)
        at reactor.core.publisher.Mono.block(Mono.java:1778)
        at io.streamthoughts.jikkou.schema.registry.reconciler.SchemaRegistrySubjectCollector.listAll(SchemaRegistrySubjectCollector.java:112)
        ... 16 more
        Suppressed: java.lang.Exception: #block terminated with an error
                at reactor.core.publisher.BlockingSingleSubscriber.blockingGet(BlockingSingleSubscriber.java:104)
                at reactor.core.publisher.Mono.block(Mono.java:1779)
                ... 17 more
Caused by: java.net.MalformedURLException: Error at index 4 in: "8081,http:"
        at java.base@21.0.2/java.net.URL.<init>(URL.java:806)
        at java.base@21.0.2/java.net.URL.of(URL.java:913)
        at java.base@21.0.2/java.net.URI.toURL(URI.java:1172)
        at org.glassfish.jersey.client.internal.HttpUrlConnector._apply(HttpUrlConnector.java:371)
        at org.glassfish.jersey.client.internal.HttpUrlConnector.apply(HttpUrlConnector.java:273)
        at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:300)
        at org.glassfish.jersey.client.JerseyInvocation.lambda$invoke$2(JerseyInvocation.java:699)
        at org.glassfish.jersey.client.JerseyInvocation.call(JerseyInvocation.java:709)
        at org.glassfish.jersey.client.JerseyInvocation.lambda$runInScope$3(JerseyInvocation.java:703)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:205)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:391)
        at org.glassfish.jersey.client.JerseyInvocation.runInScope(JerseyInvocation.java:703)
        at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:698)
        at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:432)
        at org.glassfish.jersey.client.proxy.WebResourceFactory.invoke(WebResourceFactory.java:272)
        at io.streamthoughts.jikkou.http.client.internal.ProxyInvocationHandler.invoke(ProxyInvocationHandler.java:110)
        ... 23 more
Caused by: java.lang.NumberFormatException: Error at index 4 in: "8081,http:"
        at java.base@21.0.2/java.lang.Integer.parseInt(Integer.java:743)
        at java.base@21.0.2/java.net.URLStreamHandler.parseURL(URLStreamHandler.java:236)
        at java.base@21.0.2/java.net.URL.<init>(URL.java:801)
        ... 40 more

Error: JikkouRuntimeException: Failed to list all schema registry subject versions

Expected behavior
Jikkou should be able to handle multiple URL for schema registry.

Runtime environment

  • Jikkou: 0.35.7

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions