-
Notifications
You must be signed in to change notification settings - Fork 38.6k
Closed as not planned
Labels
for: external-projectNeeds a fix in external projectNeeds a fix in external projectin: messagingIssues in messaging modules (jms, messaging)Issues in messaging modules (jms, messaging)
Description
Affects: 6.0.5
Upgrade my Spring RSocket Sample to 6.0.5, it failed with following exception when running tests.
java.lang.NoSuchFieldError: NETWORK_INTERFACES
at io.netty.resolver.dns.DnsNameResolver.anyInterfaceSupportsIpV6(DnsNameResolver.java:170)
at io.netty.resolver.dns.DnsNameResolver.<clinit>(DnsNameResolver.java:122)
at io.netty.resolver.dns.DnsNameResolverBuilder.<init>(DnsNameResolverBuilder.java:52)
at reactor.netty.transport.NameResolverProvider.newNameResolverGroup(NameResolverProvider.java:501)
at reactor.netty.tcp.TcpResources.getOrCreateDefaultResolver(TcpResources.java:315)
at reactor.netty.tcp.TcpClientConfig.defaultAddressResolverGroup(TcpClientConfig.java:104)
at reactor.netty.transport.ClientTransportConfig.resolverInternal(ClientTransportConfig.java:225)
at reactor.netty.transport.ClientTransport.connect(ClientTransport.java:59)
at reactor.netty.tcp.TcpClient.connect(TcpClient.java:193)
at io.rsocket.transport.netty.client.TcpClientTransport.connect(TcpClientTransport.java:118)
at io.rsocket.core.RSocketConnector.lambda$null$6(RSocketConnector.java:551)
at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:152)
at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53)
at reactor.core.publisher.Mono.subscribe(Mono.java:4470)
at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:200)
at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53)
at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:57)
at io.rsocket.core.DefaultRSocketClient.doSubscribe(DefaultRSocketClient.java:190)
at io.rsocket.core.ResolvingOperator.add(ResolvingOperator.java:378)
at io.rsocket.core.ResolvingOperator.observe(ResolvingOperator.java:105)
at io.rsocket.core.DefaultRSocketClient$FlatMapMain.onNext(DefaultRSocketClient.java:302)
at io.rsocket.core.DefaultRSocketClient$FlatMapMain.onNext(DefaultRSocketClient.java:214)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107)
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onNext(FluxMap.java:224)
at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:293)
at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:474)
at reactor.core.publisher.MonoCallable$MonoCallableSubscription.request(MonoCallable.java:156)
at reactor.core.publisher.MonoZip$ZipInner.onSubscribe(MonoZip.java:466)
at reactor.core.publisher.MonoCallable.subscribe(MonoCallable.java:48)
at reactor.core.publisher.MonoZip$ZipCoordinator.request(MonoZip.java:216)
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.request(FluxMap.java:295)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:136)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.request(FluxContextWrite.java:136)
at io.rsocket.core.DefaultRSocketClient$FlatMapMain.request(DefaultRSocketClient.java:327)
at io.rsocket.core.DefaultRSocketClient$FlattingInner.request(DefaultRSocketClient.java:453)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164)
at reactor.test.DefaultStepVerifierBuilder$DefaultVerifySubscriber.onSubscribe(DefaultStepVerifierBuilder.java:1161)
at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92)
at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92)
at io.rsocket.core.DefaultRSocketClient$FlatMapMain.onSubscribe(DefaultRSocketClient.java:256)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onSubscribe(FluxContextWrite.java:101)
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onSubscribe(FluxContextWrite.java:101)
at reactor.core.publisher.FluxMap$MapConditionalSubscriber.onSubscribe(FluxMap.java:194)
at reactor.core.publisher.MonoZip.subscribe(MonoZip.java:125)
at reactor.core.publisher.Mono.subscribe(Mono.java:4485)
at io.rsocket.core.DefaultRSocketClient$RSocketClientFluxOperator.subscribe(DefaultRSocketClient.java:555)
at reactor.core.publisher.Flux.subscribe(Flux.java:8671)
at reactor.test.DefaultStepVerifierBuilder$DefaultStepVerifier.toVerifierAndSubscribe(DefaultStepVerifierBuilder.java:891)
at reactor.test.DefaultStepVerifierBuilder$DefaultStepVerifier.verify(DefaultStepVerifierBuilder.java:831)
at reactor.test.DefaultStepVerifierBuilder$DefaultStepVerifier.verify(DefaultStepVerifierBuilder.java:823)
at reactor.test.DefaultStepVerifierBuilder.verifyComplete(DefaultStepVerifierBuilder.java:690)
at com.example.demo.IntegrationTests.testGetAllPosts(IntegrationTests.java:46)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:727)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at
Check the complete message from Github Actions, https://github.com/hantsy/spring6-sandbox/actions/runs/4249830087/jobs/7390342006#step:5:984
The application is very simple, just to taste the RSocket client interface feature.
@Configuration
@ComponentScan
@PropertySource(value = "classpath:application.properties", ignoreResourceNotFound = true)
public class Application {
public static void main(String[] args) throws Exception {
try (AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(
Application.class)) {
var rSocketServer = context.getBean(RSocketServer.class);
rSocketServer.bind(TcpServerTransport.create("localhost", 7000)).block();
}
}
@Bean
RSocketServer rSocketServer(RSocketMessageHandler handler) {
return RSocketServer.create(handler.responder());
}
@Bean
public RSocketStrategies rsocketStrategies() {
return RSocketStrategies.builder()
.encoders(encoders -> encoders.add(new Jackson2CborEncoder()))
.decoders(decoders -> decoders.add(new Jackson2CborDecoder()))
.routeMatcher(new PathPatternRouteMatcher())
.build();
}
}
// Client Config
@Configuration
public class ClientConfig {
@Bean
RSocketRequester rSocketRequester(RSocketStrategies strategies) {
return RSocketRequester.builder()
.rsocketStrategies(strategies)
.tcp("localhost", 7000);
}
@SneakyThrows
@Bean
public PostClientService postClientService(RSocketRequester requester) {
RSocketServiceProxyFactory rSocketServiceProxyFactory =
RSocketServiceProxyFactory.builder(requester)
.blockTimeout(Duration.ofMillis(5000))
.build();
return rSocketServiceProxyFactory.createClient(PostClientService.class);
}
}
public interface PostClientService {
@RSocketExchange("posts.findAll")
public Flux<Post> all();
@RSocketExchange("posts.titleContains")
public Flux<Post> titleContains(@Payload String title);
@RSocketExchange("posts.findById.{id}")
public Mono<Post> get(@DestinationVariable("id") UUID id);
@RSocketExchange("posts.save")
public Mono<UUID> create(@Payload Post post);
@RSocketExchange("posts.update.{id}")
public Mono<Boolean> update(@DestinationVariable("id") UUID id, @Payload Post post);
@RSocketExchange("posts.deleteById.{id}")
public Mono<Boolean> delete(@DestinationVariable("id") UUID id);
}
// Server Config
@Configuration
class ServerConfig {
@Bean
public RSocketMessageHandler rsocketMessageHandler(RSocketStrategies rsocketStrategies) {
RSocketMessageHandler handler = new RSocketMessageHandler();
handler.setRSocketStrategies(rsocketStrategies);
return handler;
}
}
The testing codes that throws the exception.
@SpringJUnitConfig(classes = Application.class)
public class IntegrationTests {
@Value("${rsocket.port:7000}")
int port;
@Autowired
PostClientService client;
@Autowired
RSocketServer rSocketServer;
private Closeable disposableServer;
@BeforeEach
public void setup() {
this.disposableServer = this.rSocketServer
.bindNow(TcpServerTransport.create("localhost", port));
}
@AfterEach
public void teardown() {
this.disposableServer.dispose();
}
@Test
public void testGetAllPosts() throws Exception {
this.client.all()
.as(StepVerifier::create)
.expectNextCount(2)
.verifyComplete();
}
}
Nishant-Pathak and ClaudioRizzo
Metadata
Metadata
Assignees
Labels
for: external-projectNeeds a fix in external projectNeeds a fix in external projectin: messagingIssues in messaging modules (jms, messaging)Issues in messaging modules (jms, messaging)