Skip to content

test(grpc): mitigate GRPC test hangs with timeout rule#6460

Merged
kuny0707 merged 1 commit intotronprotocol:release_v4.8.1from
halibobo1205:test/grpc_test_opt
Sep 29, 2025
Merged

test(grpc): mitigate GRPC test hangs with timeout rule#6460
kuny0707 merged 1 commit intotronprotocol:release_v4.8.1from
halibobo1205:test/grpc_test_opt

Conversation

@halibobo1205
Copy link
Copy Markdown
Collaborator

@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(java.base@17.0.15/Native Method)
      - parking to wait for  <0x00000000c12000f8> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park(java.base@17.0.15/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(java.base@17.0.9/Native Method)
      - parking to wait for  <0x00000000c8f00108> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park(java.base@17.0.9/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(java.base@17.0.12/Native Method)
      - parking to wait for  <0x00000000c50df010> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park(java.base@17.0.12/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(java.base@17.0.13/Native Method)
      - parking to wait for  <0x00000000c67000f8> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park(java.base@17.0.13/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(java.base@17.0.9/Native Method)
      - parking to wait for  <0x00000000e9c000a0> (a io.grpc.stub.ClientCalls$ThreadlessExecutor)
      at java.util.concurrent.locks.LockSupport.park(java.base@17.0.9/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
halibobo1205 added a commit to halibobo1205/java-tron that referenced this pull request Oct 14, 2025
…6460)

Add 30-seconds timeout rule as a workaround to prevent GRPC unit tests hanging at ThreadlessExecutor.waitAndDrain
warku123 pushed a commit to warku123/java-tron that referenced this pull request Feb 6, 2026
…6460)

Add 30-seconds timeout rule as a workaround to prevent GRPC unit tests hanging at ThreadlessExecutor.waitAndDrain
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