apache / incubator-seata

:fire: Seata is an easy-to-use, high-performance, open source distributed transaction solution.
https://seata.apache.org/
Apache License 2.0
25.29k stars 8.78k forks source link

Seata 2.2.0 Client Start up phase java.lang.NullPointerException: null #6940

Open ChinaJeckXu opened 18 hours ago

ChinaJeckXu commented 18 hours ago

Ⅰ. Issue Description

Ⅱ. Describe what happened

If there is an exception, please attach the exception trace:

2024-10-22 11:51:27.265  INFO 18969 --- [           main] o.a.s.s.b.a.SeataAutoConfiguration       : Automatically configure Seata
2024-10-22 11:51:27.285  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.spring.annotation.ScannerChecker
2024-10-22 11:51:27.400  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Ignore load compatible class io.seata.config.ExtConfigurationProvider, because is not assignable from origin type org.apache.seata.config.ExtConfigurationProvider
2024-10-22 11:51:27.410  INFO 18969 --- [           main] o.a.seata.config.ConfigurationFactory    : load Configuration from :Spring Configuration
2024-10-22 11:51:27.414  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.config.ConfigurationProvider
2024-10-22 11:51:27.425  INFO 18969 --- [           main] o.a.s.config.nacos.NacosConfiguration    : Nacos check auth with userName/password.
2024-10-22 11:51:27.693  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.integration.tx.api.remoting.RemotingParser
2024-10-22 11:51:27.695  INFO 18969 --- [           main] o.a.s.s.a.GlobalTransactionScanner       : Initializing Global Transaction Clients ... 
2024-10-22 11:51:27.977  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.core.auth.AuthSigner
2024-10-22 11:51:28.022  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyClientBootstrap   : NettyClientBootstrap has started
2024-10-22 11:51:28.034  INFO 18969 --- [           main] o.a.s.d.registry.RegistryFactory         : use registry center type: nacos
2024-10-22 11:51:28.043  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.discovery.registry.RegistryProvider
2024-10-22 11:51:28.047  INFO 18969 --- [           main] o.a.s.d.r.n.NacosRegistryServiceImpl     : Nacos check auth with userName/password.
2024-10-22 11:51:28.058  INFO 18969 --- [           main] o.a.s.d.r.n.NacosRegistryServiceImpl     : Nacos check auth with userName/password.
2024-10-22 11:51:28.320  INFO 18969 --- [           main] o.a.s.c.r.n.NettyClientChannelManager    : will connect to 192.168.0.229:8094
2024-10-22 11:51:28.325 ERROR 18969 --- [ncesChangeEvent] c.a.nacos.common.notify.NotifyCenter     : Event callback exception: 

java.lang.NullPointerException: null
    at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1690)
    at org.apache.seata.discovery.registry.RegistryService.removeOfflineAddressesIfNecessary(RegistryService.java:159)
    at org.apache.seata.discovery.registry.nacos.NacosRegistryServiceImpl.lambda$lookup$6(NacosRegistryServiceImpl.java:198)
    at com.alibaba.nacos.client.naming.selector.NamingListenerInvoker.invoke(NamingListenerInvoker.java:47)
    at com.alibaba.nacos.client.naming.selector.NamingListenerInvoker.invoke(NamingListenerInvoker.java:33)
    at com.alibaba.nacos.client.selector.AbstractSelectorWrapper.notifyListener(AbstractSelectorWrapper.java:78)
    at com.alibaba.nacos.client.naming.event.InstancesChangeNotifier.onEvent(InstancesChangeNotifier.java:108)
    at com.alibaba.nacos.client.naming.event.InstancesChangeNotifier.onEvent(InstancesChangeNotifier.java:38)
    at com.alibaba.nacos.common.notify.DefaultPublisher.lambda$notifySubscriber$0(DefaultPublisher.java:199)
    at com.alibaba.nacos.common.notify.DefaultPublisher.notifySubscriber(DefaultPublisher.java:206)
    at com.alibaba.nacos.common.notify.DefaultPublisher.receiveEvent(DefaultPublisher.java:190)
    at com.alibaba.nacos.common.notify.DefaultPublisher.openEventHandler(DefaultPublisher.java:112)
    at com.alibaba.nacos.common.notify.DefaultPublisher.run(DefaultPublisher.java:95)

2024-10-22 11:51:28.332  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyPoolableFactory   : NettyPool create channel to transactionRole:TMROLE,address:192.168.0.229:8094,msg:< RegisterTMRequest{version='2.2.0', applicationId='card-universal-sass-system-server', transactionServiceGroup='card-universal-sass-system-server-group', extraData='ak=null
digest=card-universal-sass-system-server-group,192.168.2.7,1729569088328
timestamp=1729569088328
authVersion=V4
vgroup=card-universal-sass-system-server-group
ip=192.168.2.7
'} >
[13.440s][info][gc,start      ] GC(9) Pause Young (Normal) (GCLocker Initiated GC)
[13.440s][info][gc,task       ] GC(9) Using 4 workers of 4 for evacuation
[13.469s][info][gc,phases     ] GC(9)   Pre Evacuate Collection Set: 0.0ms
[13.469s][info][gc,phases     ] GC(9)   Evacuate Collection Set: 24.0ms
[13.469s][info][gc,phases     ] GC(9)   Post Evacuate Collection Set: 4.3ms
[13.469s][info][gc,phases     ] GC(9)   Other: 0.3ms
[13.469s][info][gc,heap       ] GC(9) Eden regions: 593->0(578)
[13.469s][info][gc,heap       ] GC(9) Survivor regions: 21->36(77)
[13.469s][info][gc,heap       ] GC(9) Old regions: 18->18
[13.469s][info][gc,heap       ] GC(9) Archive regions: 0->0
[13.469s][info][gc,heap       ] GC(9) Humongous regions: 2->2
[13.469s][info][gc,metaspace  ] GC(9) Metaspace: 76819K(78464K)->76819K(78464K) NonClass: 67552K(68608K)->67552K(68608K) Class: 9267K(9856K)->9267K(9856K)
[13.469s][info][gc            ] GC(9) Pause Young (Normal) (GCLocker Initiated GC) 633M->54M(1024M) 28.571ms
[13.469s][info][gc,cpu        ] GC(9) User=0.09s Sys=0.01s Real=0.03s
[13.469s][info][gc,stringdedup] Concurrent String Deduplication (13.469s)
[13.472s][info][gc,stringdedup] Concurrent String Deduplication 115.1K->19536.0B(98352.0B) avg 47.6% (13.469s, 13.472s) 1.396ms
2024-10-22 11:51:28.596  INFO 18969 --- [ctor_TMROLE_1_1] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.core.serializer.Serializer
2024-10-22 11:51:28.645  INFO 18969 --- [           main] o.a.s.c.rpc.netty.TmNettyRemotingClient  : register TM success. client version:2.2.0, server version:2.2.0,channel:[id: 0xc1a623c8, L:/192.168.2.7:56707 - R:/192.168.0.229:8094]
2024-10-22 11:51:28.652  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyPoolableFactory   : register success, cost 137 ms, version:2.2.0,role:TMROLE,channel:[id: 0xc1a623c8, L:/192.168.2.7:56707 - R:/192.168.0.229:8094]
2024-10-22 11:51:28.653  INFO 18969 --- [           main] o.a.s.c.r.n.NettyClientChannelManager    : will connect to 192.168.0.229:8096
2024-10-22 11:51:28.653  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyPoolableFactory   : NettyPool create channel to transactionRole:TMROLE,address:192.168.0.229:8096,msg:< RegisterTMRequest{version='2.2.0', applicationId='card-universal-sass-system-server', transactionServiceGroup='card-universal-sass-system-server-group', extraData='ak=null
digest=card-universal-sass-system-server-group,192.168.2.7,1729569088653
timestamp=1729569088653
authVersion=V4
vgroup=card-universal-sass-system-server-group
ip=192.168.2.7
'} >
2024-10-22 11:51:28.667  INFO 18969 --- [           main] o.a.s.c.rpc.netty.TmNettyRemotingClient  : register TM success. client version:2.2.0, server version:2.2.0,channel:[id: 0xa18e2c4c, L:/192.168.2.7:56708 - R:/192.168.0.229:8096]
2024-10-22 11:51:28.668  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyPoolableFactory   : register success, cost 10 ms, version:2.2.0,role:TMROLE,channel:[id: 0xa18e2c4c, L:/192.168.2.7:56708 - R:/192.168.0.229:8096]
2024-10-22 11:51:28.668  INFO 18969 --- [           main] o.a.s.c.r.n.NettyClientChannelManager    : will connect to 192.168.0.229:8095
2024-10-22 11:51:28.669  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyPoolableFactory   : NettyPool create channel to transactionRole:TMROLE,address:192.168.0.229:8095,msg:< RegisterTMRequest{version='2.2.0', applicationId='card-universal-sass-system-server', transactionServiceGroup='card-universal-sass-system-server-group', extraData='ak=null
digest=card-universal-sass-system-server-group,192.168.2.7,1729569088668
timestamp=1729569088668
authVersion=V4
vgroup=card-universal-sass-system-server-group
ip=192.168.2.7
'} >
2024-10-22 11:51:28.687  INFO 18969 --- [           main] o.a.s.c.rpc.netty.TmNettyRemotingClient  : register TM success. client version:2.2.0, server version:2.2.0,channel:[id: 0x7e02c0f4, L:/192.168.2.7:56709 - R:/192.168.0.229:8095]
2024-10-22 11:51:28.688  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyPoolableFactory   : register success, cost 14 ms, version:2.2.0,role:TMROLE,channel:[id: 0x7e02c0f4, L:/192.168.2.7:56709 - R:/192.168.0.229:8095]
2024-10-22 11:51:28.689  INFO 18969 --- [           main] o.a.s.s.a.GlobalTransactionScanner       : Transaction Manager Client is initialized. applicationId[card-universal-sass-system-server] txServiceGroup[card-universal-sass-system-server-group]
2024-10-22 11:51:28.749  INFO 18969 --- [           main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.core.model.ResourceManager
2024-10-22 11:51:28.766  INFO 18969 --- [           main] o.a.seata.rm.datasource.AsyncWorker      : Async Commit Buffer Limit: 10000
2024-10-22 11:51:28.767  INFO 18969 --- [           main] o.a.s.r.datasource.xa.ResourceManagerXA  : ResourceManagerXA init ...
2024-10-22 11:51:28.779  INFO 18969 --- [           main] o.a.s.c.rpc.netty.NettyClientBootstrap   : NettyClientBootstrap has started
2024-10-22 11:51:28.780  INFO 18969 --- [           main] o.a.s.s.a.GlobalTransactionScanner       : Resource Manager is initialized. applicationId[card-universal-sass-system-server] txServiceGroup[card-universal-sass-system-server-group]
2024-10-22 11:51:28.780  INFO 18969 --- [           main] o.a.s.s.a.GlobalTransactionScanner       : Global Transaction Clients are initialized. 

Ⅲ. Describe what you expected to happen

Ⅳ. How to reproduce it (as minimally and precisely as possible)

  1. xxx
  2. xxx
  3. xxx

Minimal yet complete reproducer code (or URL to code):

Ⅴ. Anything else we need to know?

Ⅵ. Environment:

ChinaJeckXu commented 16 hours ago

经过测试,确认当前2.X分支也存在上述问题 2024-10-22 13:35:18.148 INFO 31020 --- [ main] o.a.s.s.b.a.SeataAutoConfiguration : Automatically configure Seata 2024-10-22 13:35:18.170 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.spring.annotation.ScannerChecker 2024-10-22 13:35:18.299 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Ignore load compatible class io.seata.config.ExtConfigurationProvider, because is not assignable from origin type org.apache.seata.config.ExtConfigurationProvider 2024-10-22 13:35:18.310 INFO 31020 --- [ main] o.a.seata.config.ConfigurationFactory : load Configuration from :Spring Configuration 2024-10-22 13:35:18.314 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.config.ConfigurationProvider 2024-10-22 13:35:18.326 INFO 31020 --- [ main] o.a.s.config.nacos.NacosConfiguration : Nacos check auth with userName/password. 2024-10-22 13:35:18.596 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.integration.tx.api.remoting.RemotingParser 2024-10-22 13:35:18.599 INFO 31020 --- [ main] o.a.s.s.a.GlobalTransactionScanner : Initializing Global Transaction Clients ... 2024-10-22 13:35:18.921 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.core.auth.AuthSigner 2024-10-22 13:35:18.961 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyClientBootstrap : NettyClientBootstrap has started 2024-10-22 13:35:18.973 INFO 31020 --- [ main] o.a.s.d.registry.RegistryFactory : use registry center type: nacos 2024-10-22 13:35:18.984 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.discovery.registry.RegistryProvider 2024-10-22 13:35:18.988 INFO 31020 --- [ main] o.a.s.d.r.n.NacosRegistryServiceImpl : Nacos check auth with userName/password. 2024-10-22 13:35:19.008 INFO 31020 --- [ main] o.a.s.d.r.n.NacosRegistryServiceImpl : Nacos check auth with userName/password. 2024-10-22 13:35:19.307 INFO 31020 --- [ main] o.a.s.c.r.n.NettyClientChannelManager : will connect to 192.168.0.229:8094 2024-10-22 13:35:19.310 ERROR 31020 --- [ncesChangeEvent] c.a.nacos.common.notify.NotifyCenter : Event callback exception:

java.lang.NullPointerException: null at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1690) at org.apache.seata.discovery.registry.RegistryService.removeOfflineAddressesIfNecessary(RegistryService.java:159) at org.apache.seata.discovery.registry.nacos.NacosRegistryServiceImpl.lambda$lookup$6(NacosRegistryServiceImpl.java:198) at com.alibaba.nacos.client.naming.selector.NamingListenerInvoker.invoke(NamingListenerInvoker.java:47) at com.alibaba.nacos.client.naming.selector.NamingListenerInvoker.invoke(NamingListenerInvoker.java:33) at com.alibaba.nacos.client.selector.AbstractSelectorWrapper.notifyListener(AbstractSelectorWrapper.java:78) at com.alibaba.nacos.client.naming.event.InstancesChangeNotifier.onEvent(InstancesChangeNotifier.java:108) at com.alibaba.nacos.client.naming.event.InstancesChangeNotifier.onEvent(InstancesChangeNotifier.java:38) at com.alibaba.nacos.common.notify.DefaultPublisher.lambda$notifySubscriber$0(DefaultPublisher.java:199) at com.alibaba.nacos.common.notify.DefaultPublisher.notifySubscriber(DefaultPublisher.java:206) at com.alibaba.nacos.common.notify.DefaultPublisher.receiveEvent(DefaultPublisher.java:190) at com.alibaba.nacos.common.notify.DefaultPublisher.openEventHandler(DefaultPublisher.java:112) at com.alibaba.nacos.common.notify.DefaultPublisher.run(DefaultPublisher.java:95)

2024-10-22 13:35:19.315 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyPoolableFactory : NettyPool create channel to transactionRole:TMROLE,address:192.168.0.229:8094,msg:< RegisterTMRequest{version='2.3.0-SNAPSHOT', applicationId='card-universal-sass-system-server', transactionServiceGroup='card-universal-sass-system-server-group', extraData='ak=null digest=card-universal-sass-system-server-group,192.168.2.7,1729575319312 timestamp=1729575319312 authVersion=V4 vgroup=card-universal-sass-system-server-group ip=192.168.2.7 '} > 2024-10-22 13:35:19.654 INFO 31020 --- [ctor_TMROLE_1_1] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.core.serializer.Serializer 2024-10-22 13:35:19.696 INFO 31020 --- [ main] o.a.s.c.rpc.netty.TmNettyRemotingClient : register TM success. client version:2.3.0-SNAPSHOT, server version:2.2.0,channel:[id: 0xba965ffb, L:/192.168.2.7:58573 - R:/192.168.0.229:8094] 2024-10-22 13:35:19.704 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyPoolableFactory : register success, cost 161 ms, version:2.2.0,role:TMROLE,channel:[id: 0xba965ffb, L:/192.168.2.7:58573 - R:/192.168.0.229:8094] 2024-10-22 13:35:19.706 INFO 31020 --- [ main] o.a.s.c.r.n.NettyClientChannelManager : will connect to 192.168.0.229:8096 2024-10-22 13:35:19.707 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyPoolableFactory : NettyPool create channel to transactionRole:TMROLE,address:192.168.0.229:8096,msg:< RegisterTMRequest{version='2.3.0-SNAPSHOT', applicationId='card-universal-sass-system-server', transactionServiceGroup='card-universal-sass-system-server-group', extraData='ak=null digest=card-universal-sass-system-server-group,192.168.2.7,1729575319707 timestamp=1729575319707 authVersion=V4 vgroup=card-universal-sass-system-server-group ip=192.168.2.7 '} > 2024-10-22 13:35:19.722 INFO 31020 --- [ main] o.a.s.c.rpc.netty.TmNettyRemotingClient : register TM success. client version:2.3.0-SNAPSHOT, server version:2.2.0,channel:[id: 0xd49b833f, L:/192.168.2.7:58574 - R:/192.168.0.229:8096] 2024-10-22 13:35:19.722 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyPoolableFactory : register success, cost 11 ms, version:2.2.0,role:TMROLE,channel:[id: 0xd49b833f, L:/192.168.2.7:58574 - R:/192.168.0.229:8096] 2024-10-22 13:35:19.722 INFO 31020 --- [ main] o.a.s.c.r.n.NettyClientChannelManager : will connect to 192.168.0.229:8095 2024-10-22 13:35:19.723 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyPoolableFactory : NettyPool create channel to transactionRole:TMROLE,address:192.168.0.229:8095,msg:< RegisterTMRequest{version='2.3.0-SNAPSHOT', applicationId='card-universal-sass-system-server', transactionServiceGroup='card-universal-sass-system-server-group', extraData='ak=null digest=card-universal-sass-system-server-group,192.168.2.7,1729575319722 timestamp=1729575319722 authVersion=V4 vgroup=card-universal-sass-system-server-group ip=192.168.2.7 '} > 2024-10-22 13:35:19.736 INFO 31020 --- [ main] o.a.s.c.rpc.netty.TmNettyRemotingClient : register TM success. client version:2.3.0-SNAPSHOT, server version:2.2.0,channel:[id: 0xb5b0eaae, L:/192.168.2.7:58575 - R:/192.168.0.229:8095] 2024-10-22 13:35:19.737 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyPoolableFactory : register success, cost 11 ms, version:2.2.0,role:TMROLE,channel:[id: 0xb5b0eaae, L:/192.168.2.7:58575 - R:/192.168.0.229:8095] 2024-10-22 13:35:19.738 INFO 31020 --- [ main] o.a.s.s.a.GlobalTransactionScanner : Transaction Manager Client is initialized. applicationId[card-universal-sass-system-server] txServiceGroup[card-universal-sass-system-server-group] 2024-10-22 13:35:19.792 INFO 31020 --- [ main] ServiceLoader$InnerEnhancedServiceLoader : Load compatible class io.seata.core.model.ResourceManager 2024-10-22 13:35:19.806 INFO 31020 --- [ main] o.a.seata.rm.datasource.AsyncWorker : Async Commit Buffer Limit: 10000 2024-10-22 13:35:19.807 INFO 31020 --- [ main] o.a.s.r.datasource.xa.ResourceManagerXA : ResourceManagerXA init ... 2024-10-22 13:35:19.819 INFO 31020 --- [ main] o.a.s.c.rpc.netty.NettyClientBootstrap : NettyClientBootstrap has started 2024-10-22 13:35:19.819 INFO 31020 --- [ main] o.a.s.s.a.GlobalTransactionScanner : Resource Manager is initialized. applicationId[card-universal-sass-system-server] txServiceGroup[card-universal-sass-system-server-group] 2024-10-22 13:35:19.819 INFO 31020 --- [ main] o.a.s.s.a.GlobalTransactionScanner : Global Transaction Clients are initialized.

ChinaJeckXu commented 14 hours ago

After investigation, it was found that the transactionServiceGroup at line 84 of NacosRegistryServiceImpl is null, which should be corrected for line 195 removeOfflineAddressesIfNecessary(transactionServiceGroup, clusterName, newAddressList); Change to: if (StringUtils.isNotEmpty(transactionServiceGroup)) { removeOfflineAddressesIfNecessary(transactionServiceGroup, clusterName, newAddressList); }

ChinaJeckXu commented 14 hours ago

@laywin