cartridge-java
cartridge-java copied to clipboard
Unsupported metadata format: key 'spaces' must contain a map of spaces names to space metadata
Red Hat Enterprise Linux Server release 7.9 (Maipo) Tarantool 2.10.0-0-g0a5ce0b Cartridge 2.7.4 cartridge-driver 0.8.0
Java client cannot refresh spaces and indexes metadata.
Java code:
TarantoolClient<TarantoolTuple, TarantoolResult<TarantoolTuple>> client = TarantoolClientFactory.createClient()
.withAddress("some-host:3301")
.withCredentials(USER_NAME, PASSWORD)
.withProxyMethodMapping()
.build();
TarantoolTupleFactory tupleFactory = new DefaultTarantoolTupleFactory(new DefaultMessagePackMapper());
TarantoolSpaceOperations<TarantoolTuple, TarantoolResult<TarantoolTuple>> space = client.space("space");
Console output:
2022-06-01 17:07:21.247 DEBUG 45157 [aitility-thread] d.c.c.AbstractTarantoolConnectionManager Current connection mode: FULL
2022-06-01 17:07:21.600 INFO 45157 [ntLoopGroup-2-1] d.c.c.AbstractTarantoolConnectionManager Connected to Tarantool server at srv8-dustpietre/172.18.48.36:3301
2022-06-01 17:07:21.669 ERROR 45157 [aitility-thread] t.c.a.s.CacheServiceWithDirectConnection Failed to refresh spaces and indexes metadata
io.tarantool.driver.exceptions.TarantoolClientException: Failed to refresh spaces and indexes metadata
at io.tarantool.driver.core.metadata.TarantoolMetadata.awaitInitLatch(TarantoolMetadata.java:89)
at io.tarantool.driver.core.metadata.TarantoolMetadata.getSpaceMetadata(TarantoolMetadata.java:41)
at io.tarantool.driver.core.metadata.TarantoolMetadata.getSpaceByName(TarantoolMetadata.java:126)
at io.tarantool.driver.core.ProxyTarantoolClient.space(ProxyTarantoolClient.java:110)
at com.nexign.tarantool.cartridge.app.service.CacheServiceWithDirectConnection.lambda$test$0(CacheServiceWithDirectConnection.java:54)
at org.awaitility.core.CallableCondition$ConditionEvaluationWrapper.eval(CallableCondition.java:99)
at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:232)
at org.awaitility.core.ConditionAwaiter$ConditionPoller.call(ConditionAwaiter.java:219)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: io.tarantool.driver.exceptions.TarantoolMetadataRequestException: Failed to retrieve space and index metadata using proxy function ddl.get_schema
at io.tarantool.driver.core.metadata.ProxyMetadataProvider.lambda$getMetadata$0(ProxyMetadataProvider.java:51)
at java.base/java.util.concurrent.CompletableFuture.uniExceptionally(CompletableFuture.java:986)
at java.base/java.util.concurrent.CompletableFuture$UniExceptionally.tryFire(CompletableFuture.java:970)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
at java.base/java.util.concurrent.CompletableFuture.completeExceptionally(CompletableFuture.java:2088)
at io.tarantool.driver.handlers.TarantoolResponseHandler.channelRead0(TarantoolResponseHandler.java:53)
at io.tarantool.driver.handlers.TarantoolResponseHandler.channelRead0(TarantoolResponseHandler.java:23)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:327)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:299)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:722)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:584)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:496)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
... 1 common frames omitted
Caused by: java.util.concurrent.CompletionException: io.tarantool.driver.exceptions.TarantoolClientException: Unsupported metadata format: key 'spaces' must contain a map of spaces names to space metadata
at java.base/java.util.concurrent.CompletableFuture.encodeRelay(CompletableFuture.java:367)
at java.base/java.util.concurrent.CompletableFuture.completeRelay(CompletableFuture.java:376)
at java.base/java.util.concurrent.CompletableFuture$UniRelay.tryFire(CompletableFuture.java:1019)
... 26 common frames omitted
Caused by: io.tarantool.driver.exceptions.TarantoolClientException: Unsupported metadata format: key 'spaces' must contain a map of spaces names to space metadata
at io.tarantool.driver.core.metadata.DDLTarantoolSpaceMetadataConverter.fromValue(DDLTarantoolSpaceMetadataConverter.java:66)
at io.tarantool.driver.core.metadata.DDLTarantoolSpaceMetadataConverter.fromValue(DDLTarantoolSpaceMetadataConverter.java:29)
at io.tarantool.driver.core.SingleValueCallResultImpl.<init>(SingleValueCallResultImpl.java:32)
at io.tarantool.driver.mappers.converters.value.custom.SingleValueCallResultConverter.fromValue(SingleValueCallResultConverter.java:26)
at io.tarantool.driver.mappers.converters.value.custom.SingleValueCallResultConverter.fromValue(SingleValueCallResultConverter.java:14)
at io.tarantool.driver.mappers.DefaultMessagePackMapper.fromValue(DefaultMessagePackMapper.java:115)
at io.tarantool.driver.mappers.DefaultMessagePackMapper.fromValue(DefaultMessagePackMapper.java:95)
at io.tarantool.driver.mappers.AbstractResultMapper.fromValue(AbstractResultMapper.java:37)
at io.tarantool.driver.handlers.TarantoolResponseHandler.channelRead0(TarantoolResponseHandler.java:51)
... 23 common frames omitted
The problem is located in io.tarantool.driver.core.metadata.DDLTarantoolSpaceMetadataConverter in function fromValue(). Type of spacesMap.get(SPACES_KEY) is not a Map.
https://user-images.githubusercontent.com/106586241/171426758-3b9da7df-4516-4939-9fdc-9dcc9d6f5f38.png
Original ticket: https://github.com/tarantool/cartridge/issues/1827