Skip to content

Conversation

halibobo1205
Copy link
Contributor

@halibobo1205 halibobo1205 commented Sep 26, 2025

What does this PR do?
Add a 30-second timeout rule as a workaround to prevent GRPC unit tests hanging at ThreadlessExecutor.waitAndDrain.
Why are these changes required?
Mitigate GRPC test hangs.
This PR has been tested by:

  • Unit Tests
  • Manual Testing

Follow up
grpc-java:ThreadlessExecutor.waitAndDrain related issue

Extra details

java.lang.Thread.State: WAITING (parking)
      at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
      - parking to wait for  <0x00000000c12000f8> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:211)
      at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:817)
      at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:166)
      at org.tron.api.WalletGrpc$WalletBlockingStub.accountPermissionUpdate(WalletGrpc.java:7983)
      at org.tron.core.services.RpcApiServicesTest.testAccountPermissionUpdate(RpcApiServicesTest.java:1102)


java.lang.Thread.State: WAITING (parking)
      at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
      - parking to wait for  <0x00000000c8f00108> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:211)
      at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:717)
      at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:159)
      at org.tron.api.WalletGrpc$WalletBlockingStub.createWitness2(WalletGrpc.java:7323)
      at org.tron.core.services.RpcApiServicesTest.testCreateWitness(RpcApiServicesTest.java:800)

java.lang.Thread.State: WAITING (parking)
      at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
      - parking to wait for  <0x00000000c50df010> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:211)
      at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:817)
      at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:166)
      at org.tron.api.DatabaseGrpc$DatabaseBlockingStub.getNowBlock(DatabaseGrpc.java:336)
      at org.tron.common.client.DatabaseGrpcClient.getBlock(DatabaseGrpcClient.java:40)
      at org.tron.program.SolidityNodeTest.testSolidityGrpcCall(SolidityNodeTest.java:67)

java.lang.Thread.State: WAITING (parking)
      at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
      - parking to wait for  <0x00000000c67000f8> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:211)
      at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:817)
      at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:166)
      at org.tron.api.WalletGrpc$WalletBlockingStub.getExpandedSpendingKey(WalletGrpc.java:8077)
      at org.tron.core.services.RpcApiServicesTest.test02GetExpandedSpendingKey(RpcApiServicesTest.java:1140)

java.lang.Thread.State: WAITING (parking)
      at jdk.internal.misc.Unsafe.park([email protected]/Native Method)
      - parking to wait for  <0x00000000e9c000a0> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park([email protected]/LockSupport.java:211)
      at io.grpc.stub.ClientCalls$ThreadlessExecutor.waitAndDrain(ClientCalls.java:817)
      at io.grpc.stub.ClientCalls.blockingUnaryCall(ClientCalls.java:166)
      at org.tron.api.WalletGrpc$WalletBlockingStub.estimateEnergy(WalletGrpc.java:7822)
      at org.tron.core.services.RpcApiServicesTest.testEstimateEnergy(RpcApiServicesTest.java:1026)

   Add 30-seconds timeout rule as a workaround to prevent GRPC unit tests hanging at ThreadlessExecutor.waitAndDrain
@kuny0707 kuny0707 merged commit 6e5eda8 into tronprotocol:release_v4.8.1 Sep 29, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants