turms-im / turms

🕊️ The world's most advanced open source instant messaging engine for 100K~10M concurrent users https://turms-im.github.io/docs
Apache License 2.0
1.74k stars 270 forks source link

UserAuthenticator plugin gateway error #1458

Closed AuroraLove closed 4 months ago

AuroraLove commented 5 months ago
  1. When I implement the plugin at the custom UserAuthenticator endpoint, I call getContext().getBean(RpcService.class) in the authenticate method, and it prompts: No qualifying bean of type 'im.turms.server.common.infra.cluster.service .rpc.RpcService' available
  2. When I call the getContext().getBean(UserRepository.class).findPassword(...) method, it prompts:java.lang.NullPointerException: Cannot invoke "im.turms.server.common.storage.mongo.TurmsMongoClient.findOne(java.lang.Class, im.turms.server.common.storage.mongo.operation.option.Filter, im.turms.server.common.storage.mongo.operation.option.QueryOptions)" because "this.mongoClient" is null
JamesChenX commented 5 months ago

I call getContext().getBean(RpcService.class) in the authenticate method, and it prompts. No qualifying bean of type 'im.turms.server.common.infra.cluster.service .rpc.RpcService' available

Please ensure you call getContext().getBean(Node.class).getRpcService() in your extension's start(). If you already called the method in start(), please post the log file so that I can pinpoint the problem accurately.

because "this.mongoClient" is null.

turms-gateway will not populate mongoClient of UserRepository if turms-gateway itself doesn't use it to avoid unnecessary resource consumption, and that's why you get an NPE. (you can check the code for details: im.turms.gateway.storage.mongo.MongoConfig#userMongoClient)

If you want to use the password for authentication, you can use the turms-gateway default implementation as it implements authentication based on the user password. If not, what's your business requirements that you need to use UserRepository, if it's reasonable, I may add a property like ...always-enable-user-mongo-client so that you can always use UserRepository.

darkSystemCode commented 4 months ago

The following is the code I use RpcService in the plugin. I get an error when I deploy it. @Override protected Mono start() { passwordManager = getContext().getBean(PasswordManager.class); userService = new PluginUserService(getContext().getBean(UserRepository.class), getContext().getBean(MetricsService.class)); rpcService = getContext().getBean(RpcService.class); LOGGER.info("rpcService: ({})", rpcService); return Mono.empty(); } error info: 2024-05-13 08:48:20.092 INFO G lyrrmakz 6106476360823104437 turms-admin-http-worker-28-1 : turms|192.168.1.149|e8ab82c8-20|2024-05-13 08:48:20.088|updatePlugins|{ids=[com.im.turms.plugin.auth.MyPlugin], updatePluginDTO=UpdatePluginDTO[status=STARTED]}|FALSE|4|java.lang.RuntimeException: Caught errors while starting plugins 2024-05-13 08:48:20.093 ERROR G lyrrmakz 6106476360823104437 turms-admin-http-worker-28-1 i.t.s.c.a.a.w.HttpRequestDispatcher : Caught an error while handling the HTTP request: PUT{uri=/plugins, connection=SimpleConnection{channel=[id: 0xe8ab82c8, L:/192.168.1.149:9510 - R:/192.168.1.149:58426]}} java.lang.RuntimeException: Caught errors while starting plugins at im.turms.server.common.infra.plugin.PluginManager.lambda$startPlugins$10(PluginManager.java:559)

suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

Assembly trace from producer [reactor.core.publisher.MonoError] : reactor.core.publisher.Mono.error(Mono.java:299) im.turms.server.common.infra.plugin.PluginManager.lambda$startPlugins$10(PluginManager.java:560) Error has been observed at the following site(s): __Mono.error ⇢ at im.turms.server.common.infra.plugin.PluginManager.lambda$startPlugins$10(PluginManager.java:560) Mono.onErrorResume ⇢ at im.turms.server.common.infra.plugin.PluginManager.startPlugins(PluginManager.java:559) ____Mono.thenReturn ⇢ at im.turms.server.common.infra.plugin.PluginManager.startPlugins(PluginManager.java:561) | Mono.map ⇢ at im.turms.server.common.access.admin.dto.response.HttpHandlerResult.updateResultByIntegerMono(HttpHandlerResult.java:148) | Mono.map ⇢ at im.turms.server.common.access.admin.dto.response.HttpHandlerResult.okIfTruthy(HttpHandlerResult.java:187) | Mono.switchIfEmpty ⇢ at im.turms.server.common.access.admin.dto.response.HttpHandlerResult.okIfTruthy(HttpHandlerResult.java:189) |_ Mono.map ⇢ at im.turms.server.common.access.admin.web.HttpRequestDispatcher.invokeHandler(HttpRequestDispatcher.java:468) ____Mono.flatMap ⇢ at im.turms.server.common.access.admin.web.HttpRequestDispatcher.lambda$handleRequest$12(HttpRequestDispatcher.java:411) __Mono.defer ⇢ at im.turms.server.common.access.admin.web.HttpRequestDispatcher.lambda$handleRequest$14(HttpRequestDispatcher.java:392) |_ Mono.doFinally ⇢ at im.turms.server.common.access.admin.web.HttpRequestDispatcher.lambda$handleRequest$14(HttpRequestDispatcher.java:417) __Mono.flatMap ⇢ at im.turms.server.common.access.admin.web.HttpRequestDispatcher.handleRequest(HttpRequestDispatcher.java:392) |_ Mono.doOnEach ⇢ at im.turms.server.common.access.admin.web.HttpRequestDispatcher.handle(HttpRequestDispatcher.java:315) Original Stack Trace: at im.turms.server.common.infra.plugin.PluginManager.lambda$startPlugins$10(PluginManager.java:559) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:210) at reactor.core.publisher.MonoWhen$WhenInner.onError(MonoWhen.java:412) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) at reactor.core.publisher.Operators.error(Operators.java:198) at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4568) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) at reactor.core.publisher.MonoWhen$WhenCoordinator.signal(MonoWhen.java:210) at reactor.core.publisher.MonoWhen$WhenInner.onError(MonoWhen.java:412) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) at reactor.core.publisher.Operators.error(Operators.java:198) at reactor.core.publisher.MonoError.subscribe(MonoError.java:53) at reactor.core.publisher.Mono.subscribe(Mono.java:4568) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:103) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onError(FluxDoFinally.java:119) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onError(MonoPeekTerminal.java:258) at reactor.core.publisher.Operators.error(Operators.java:198) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:49) at reactor.core.publisher.Mono.subscribe(Mono.java:4568) at reactor.core.publisher.MonoWhen$WhenCoordinator.request(MonoWhen.java:229) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74) at reactor.core.publisher.MonoWhen.subscribe(MonoWhen.java:101) at reactor.core.publisher.Mono.subscribe(Mono.java:4568) at reactor.core.publisher.MonoWhen$WhenCoordinator.request(MonoWhen.java:229) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onSubscribe(FluxOnErrorResume.java:74) at reactor.core.publisher.MonoWhen.subscribe(MonoWhen.java:101) at reactor.core.publisher.Mono.subscribe(Mono.java:4568) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:265) at reactor.core.publisher.MonoIgnoreThen.subscribe(MonoIgnoreThen.java:51) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:158) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onNext(FluxSwitchIfEmpty.java:74) at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondComplete(MonoFlatMap.java:245) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onNext(MonoFlatMap.java:305) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:122) at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2571) at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.request(FluxDefaultIfEmpty.java:98) at reactor.core.publisher.MonoFlatMap$FlatMapInner.onSubscribe(MonoFlatMap.java:291) at reactor.core.publisher.Operators$BaseFluxToMonoOperator.onSubscribe(Operators.java:2051) at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.FluxMap$MapSubscriber.onNext(FluxMap.java:122) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2571) at reactor.core.publisher.FluxMap$MapSubscriber.request(FluxMap.java:164) at reactor.core.publisher.MonoFlatMap$FlatMapMain.request(MonoFlatMap.java:194) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.set(Operators.java:2367) at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onSubscribe(Operators.java:2241) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onSubscribe(MonoFlatMap.java:117) at reactor.core.publisher.FluxMap$MapSubscriber.onSubscribe(FluxMap.java:92) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.Mono.subscribe(Mono.java:4568) at reactor.core.publisher.FluxFlatMap.trySubscribeScalarMap(FluxFlatMap.java:202) at reactor.core.publisher.MonoFlatMap.subscribeOrReturn(MonoFlatMap.java:53) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:63) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:165) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:294) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:294) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:237) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) at reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber.onComplete(FluxSwitchIfEmpty.java:85) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.complete(MonoIgnoreThen.java:295) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onNext(MonoIgnoreThen.java:188) at reactor.core.publisher.Operators$ScalarSubscription.request(Operators.java:2571) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onSubscribe(MonoIgnoreThen.java:135) at reactor.core.publisher.MonoJust.subscribe(MonoJust.java:55) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoDefer.subscribe(MonoDefer.java:53) at reactor.core.publisher.InternalMonoOperator.subscribe(InternalMonoOperator.java:76) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:241) at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:204) at reactor.core.publisher.FluxPeekFuseable$PeekFuseableSubscriber.onComplete(FluxPeekFuseable.java:277) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:415) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:446) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:687) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:114) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:284) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:346) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:318) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at reactor.netty.channel.AbstractChannelMetricsHandler.channelRead(AbstractChannelMetricsHandler.java:148) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) 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:788) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:1583) @JamesChenX

darkSystemCode commented 4 months ago

以下是我跟踪代码发现的一些问题,getBean(RpcService.class)获取不到RpcService Bean对象,我使用@Component注解标识RpcService类,可以正常获取到RpcService(另外也需要把RpcProperties交由springboot管理),但是会产生连锁错误(because "this.discoveryService" is null)。 bug1 bug2

bug3 bug4 bug5

JamesChenX commented 4 months ago

@darkSystemCode Sorry for the misleading in the above comment. You need to call getContext().getBean(Node.class).getRpcService() to get the RPC service because Node is the only entry point for all node/cluster services

AuroraLove commented 4 months ago

Thanks a lot.My problem and his are caused by the same problem. They are both used incorrectly getContext().getBean(RpcService.class).I have removed the use of UserRepository

darkSystemCode commented 4 months ago

@JamesChenX Changing to getContext().getBean(Node.class).getRpcService(), calling CreateUserRequest through rpcService resulted in a worse error. error info: 2024-05-14 01:46:04.045 INFO G mnahciyc 2231516667457643190 turms-common-timer : 576310318|137|BROWSER|1|192.168.1.108|7606047485354704|QUERY_MESSAGES_REQUEST|27|2024-05-14 01:45:33.945|1200||497|30100 2024-05-14 01:46:04.465 INFO G mnahciyc turms-gateway-ws-worker-25-4 c.i.t.p.a.MyTurmsRequestHandler : login info (UserLoginInfo[version=1, userId=136, password=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQXZhdGFyIjoiIiwidXNlck5pY2tuYW1lIjoiMTg0KioqKjU5NjMiLCJleHAiOjE3MTU4MjMxNzAsInVzZXJJZCI6IjEzNiJ9.1I_tb91T5K9Uz671HzVqmBeUYij9JKENNTs1sRDO_Mw, loggingInDeviceType=BROWSER, deviceDetails={}, userStatus=AVAILABLE, location=null, ip=127.0.0.1]) 2024-05-14 01:46:04.466 INFO G mnahciyc turms-gateway-ws-worker-25-4 c.i.t.p.a.d.a.a.AuthAggregate : login info (UserLoginInfo[version=1, userId=136, password=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQXZhdGFyIjoiIiwidXNlck5pY2tuYW1lIjoiMTg0KioqKjU5NjMiLCJleHAiOjE3MTU4MjMxNzAsInVzZXJJZCI6IjEzNiJ9.1I_tb91T5K9Uz671HzVqmBeUYij9JKENNTs1sRDO_Mw, loggingInDeviceType=BROWSER, deviceDetails={}, userStatus=AVAILABLE, location=null, ip=127.0.0.1]) 2024-05-14 01:46:04.474 INFO G mnahciyc turms-gateway-ws-worker-25-4 c.i.t.p.a.d.a.c.RequestManage : rpc call result: ({"code":0,"msg":"","data":true}) 2024-05-14 01:46:04.474 INFO G mnahciyc turms-gateway-ws-worker-25-4 c.i.t.p.a.d.a.a.AuthAggregate : rpc success (true) 2024-05-14 01:46:04.481 INFO G mnahciyc mongo-event-loop-20-5 c.i.t.p.a.MyTurmsRequestHandler : user exists (false) 2024-05-14 01:46:04.486 INFO G mnahciyc lettuce-nioEventLoop-10-1 : 1731180|136|BROWSER|1|127.0.0.1|4115194784564176|CREATE_SESSION_REQUEST|209|2024-05-14 01:46:04.464|1000||19|22 2024-05-14 01:46:10.225 INFO G mnahciyc 7194966169458123553 turms-admin-http-worker-28-1 : |127.0.0.1|3f1fcf3c-30|2024-05-14 01:46:10.181|getMetrics|{names=[jvm.gc.max.data.size, system.memory.total, system.cpu.usage, system.memory.free, jvm.gc.memory.promoted, jvm.memory.used, user.logged_in, jvm.classes.unloaded, jvm.threads.peak, jvm.gc.pause, turms.client.request, disk.free, jvm.buffer.total.capacity, jvm.buffer.memory.used, jvm.classes.loaded, disk.total, jvm.memory.committed, system.memory.swap.free, http.server.requests, user.online, process.cpu.usage, system.memory.swap.total, rpc.request, jvm.gc.live.data.size, jvm.threads.live, jvm.gc.memory.allocated, jvm.threads.daemon, jvm.memory.max, jvm.buffer.count], returnDescription=false, returnAvailableTags=false}|TRUE|44| 2024-05-14 01:46:16.530 WARN G mnahciyc turms-node-connection-server-worker-4-2 i.t.s.c.i.c.s.c.ConnectionService : [Server] The connection to the member {id=qtrpdlpn, host=192.168.1.149, port=7510} has been closed unexpectedly 2024-05-14 01:46:16.531 INFO G mnahciyc turms-node-connection-server-worker-4-2 i.t.s.c.i.c.s.c.ConnectionService : [Server] Stop to connect the member {id=qtrpdlpn, host=192.168.1.149, port=7510} because the local node is server 2024-05-14 01:46:20.228 INFO G mnahciyc 5587598574753133639 turms-admin-http-worker-28-1 : |127.0.0.1|3f1fcf3c-32|2024-05-14 01:46:20.184|getMetrics|{names=[jvm.gc.max.data.size, system.memory.total, system.cpu.usage, system.memory.free, jvm.gc.memory.promoted, jvm.memory.used, user.logged_in, jvm.classes.unloaded, jvm.threads.peak, jvm.gc.pause, turms.client.request, disk.free, jvm.buffer.total.capacity, jvm.buffer.memory.used, jvm.classes.loaded, disk.total, jvm.memory.committed, system.memory.swap.free, http.server.requests, user.online, process.cpu.usage, system.memory.swap.total, rpc.request, jvm.gc.live.data.size, jvm.threads.live, jvm.gc.memory.allocated, jvm.threads.daemon, jvm.memory.max, jvm.buffer.count], returnDescription=false, returnAvailableTags=false}|TRUE|44| 2024-05-14 01:46:27.201 INFO G mnahciyc 8526400644884591883 turms-admin-http-worker-28-1 : |127.0.0.1|3f1fcf3c-34|2024-05-14 01:46:27.196|getMetrics|{names=[system.cpu.usage, disk.free, system.memory.free, system.memory.total, disk.total], returnDescription=false, returnAvailableTags=false}|TRUE|3| 2024-05-14 01:46:31.542 INFO G mnahciyc turms-node-connection-server-worker-4-3 i.t.s.c.i.c.s.c.ConnectionService : [Server] Connected to the member 2024-05-14 01:46:31.546 INFO G mnahciyc 9136929764218156904 turms-node-connection-server-worker-4-3 i.t.s.c.i.c.s.c.ConnectionService : [Server] Completed the opening handshake with the member: qtrpdlpn[192.168.1.149:7510] 2024-05-14 01:46:34.517 INFO G mnahciyc turms-common-timer c.i.t.p.a.MyTurmsRequestHandler : create user error({}) java.lang.RuntimeException: Failed to request a response for the request: CreateUserRequest(id=136, rawPassword=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyQXZhdGFyIjoiIiwidXNlck5pY2tuYW1lIjoiMTg0KioqKjU5NjMiLCJleHAiOjE3MTU4MjMxNzAsInVzZXJJZCI6IjEzNiJ9.1I_tb91T5K9Uz671HzVqmBeUYij9JKENNTs1sRDO_Mw, name=, intro=null, profilePicture=null, profileAccessStrategy=ALL, permissionGroupId=0, registrationDate=Tue May 14 01:46:04 UTC 2024, isActive=true) at im.turms.server.common.infra.cluster.service.rpc.RpcService.mapThrowable(RpcService.java:621)

suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

Assembly trace from producer [reactor.core.publisher.MonoError] :

Error has been observed at the following site(s): ____Mono.onErrorMap ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:494) | Mono.onErrorResume ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse(RpcService.java:319) |_ Mono.doFinally ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse(RpcService.java:335) __Mono.error ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.lambda$requestResponse$2(RpcService.java:333) Original Stack Trace: at im.turms.server.common.infra.cluster.service.rpc.RpcService.mapThrowable(RpcService.java:621) at im.turms.server.common.infra.cluster.service.rpc.RpcService.lambda$requestResponse0$5(RpcService.java:494) at reactor.core.publisher.Mono.lambda$onErrorMap$28(Mono.java:3854) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) at reactor.core.publisher.MonoMetrics$MetricsSubscriber.onError(MonoMetrics.java:113) at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:281) at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:420) at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) at im.turms.server.common.infra.reactor.ExtendedTimerTask.run(ExtendedTimerTask.java:42) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:706) at io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:694) at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:781) at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:494) at java.lang.Thread.run(Thread.java:1583)

caused by: java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 30000ms in 'Mono.deferContextual ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:471)' (and no fallback has been configured) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296)

suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

Assembly trace from producer [reactor.core.publisher.MonoTimeout] : reactor.core.publisher.Mono.timeout(Mono.java:5034) im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:485) Error has been observed at the following site(s): *_Mono.timeout ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:485) | Mono.metrics ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:493) Original Stack Trace: at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:281) at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:420) at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) at im.turms.server.common.infra.reactor.ExtendedTimerTask.run(ExtendedTimerTask.java:42) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:706) at io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:694) at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:781) at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:494) at java.lang.Thread.run(Thread.java:1583)

2024-05-14 01:46:36.218 ERROR G mnahciyc 7431434673320381664 turms-common-timer i.t.g.a.c.c.ClientRequestDispatcher : Failed to handle the service request: SimpleTurmsRequest[requestId=7770688167233702, type=QUERY_USER_PROFILES_REQUEST, createSessionRequest=null] java.lang.RuntimeException: Failed to request a response for the request: HandleServiceRequest{name='handleServiceRequest', tag=tag(type=QUERY_USER_PROFILES_REQUEST), requestTime=1715651166207, tracingContext=im.turms.server.common.infra.tracing.TracingContext@3151bc73, serviceRequest=ServiceRequest{ip=192.168.1.108, userId=137, deviceType=BROWSER, requestId=7770688167233702, type=QUERY_USER_PROFILES_REQUEST, turmsRequestBuffer=AdvancedLeakAwareByteBuf(PooledUnsafeDirectByteBuf(ridx: 0, widx: 16, cap: 16))}} at im.turms.server.common.infra.cluster.service.rpc.RpcService.mapThrowable(RpcService.java:621)

suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

Assembly trace from producer [reactor.core.publisher.MonoError] :

Error has been observed at the following site(s): __Mono.onErrorMap ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:494) | Mono.onErrorResume ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse(RpcService.java:319) | Mono.doFinally ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse(RpcService.java:335) | Mono.defaultIfEmpty ⇢ at im.turms.gateway.domain.servicerequest.service.ServiceRequestService.handleServiceRequest(ServiceRequestService.java:65) | Mono.map ⇢ at im.turms.gateway.domain.servicerequest.service.ServiceRequestService.handleServiceRequest(ServiceRequestService.java:66) |_ Mono.metrics ⇢ at im.turms.gateway.access.client.common.ClientRequestDispatcher.handleRequest(ClientRequestDispatcher.java:175) ___Mono.error ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.lambda$requestResponse$2(RpcService.java:333) Original Stack Trace: at im.turms.server.common.infra.cluster.service.rpc.RpcService.mapThrowable(RpcService.java:621) at im.turms.server.common.infra.cluster.service.rpc.RpcService.lambda$requestResponse0$5(RpcService.java:494) at reactor.core.publisher.Mono.lambda$onErrorMap$28(Mono.java:3854) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) at reactor.core.publisher.MonoMetrics$MetricsSubscriber.onError(MonoMetrics.java:113) at reactor.core.publisher.SerializedSubscriber.onError(SerializedSubscriber.java:124) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:281) at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:420) at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) at im.turms.server.common.infra.reactor.ExtendedTimerTask.run(ExtendedTimerTask.java:42) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:706) at io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:694) at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:781) at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:494) at java.lang.Thread.run(Thread.java:1583)

caused by: java.util.concurrent.TimeoutException: Did not observe any item or terminal signal within 30000ms in 'Mono.deferContextual ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:471)' (and no fallback has been configured) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296)

suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException: 

Assembly trace from producer [reactor.core.publisher.MonoTimeout] : reactor.core.publisher.Mono.timeout(Mono.java:5034) im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:485) Error has been observed at the following site(s): *_Mono.timeout ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:485) | Mono.metrics ⇢ at im.turms.server.common.infra.cluster.service.rpc.RpcService.requestResponse0(RpcService.java:493) Original Stack Trace: at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.handleTimeout(FluxTimeout.java:296) at reactor.core.publisher.FluxTimeout$TimeoutMainSubscriber.doTimeout(FluxTimeout.java:281) at reactor.core.publisher.FluxTimeout$TimeoutTimeoutSubscriber.onNext(FluxTimeout.java:420) at reactor.core.publisher.FluxOnErrorReturn$ReturnSubscriber.onNext(FluxOnErrorReturn.java:162) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.propagateDelay(MonoDelay.java:270) at reactor.core.publisher.MonoDelay$MonoDelayRunnable.run(MonoDelay.java:285) at im.turms.server.common.infra.reactor.ExtendedTimerTask.run(ExtendedTimerTask.java:42) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:706) at io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34) at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:694) at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:781) at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:494) at java.lang.Thread.run(Thread.java:1583)