Skip to content

Commit 09b1c17

Browse files
committed
Longer timeout, and upload heap dumps + thread dumps
1 parent 9833943 commit 09b1c17

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

.github/workflows/run-tck.yml

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,43 @@ jobs:
9797
done
9898
9999
- name: Run TCK
100-
timeout-minutes: 10
100+
timeout-minutes: 5
101101
run: |
102102
./run_tck.py --sut-url ${{ env.SUT_JSONRPC_URL }} --category all --transports jsonrpc,grpc,rest --compliance-report report.json
103103
working-directory: tck/a2a-tck
104+
- name: Capture Thread Dump
105+
if: always()
106+
run: |
107+
# Get PID of Quarkus process
108+
QUARKUS_PID=$(pgrep -f "quarkus:dev" || echo "")
109+
if [ -n "$QUARKUS_PID" ]; then
110+
echo "📊 Capturing thread dump for PID $QUARKUS_PID"
111+
jstack $QUARKUS_PID > tck/target/thread-dump.txt || echo "Failed to capture thread dump"
112+
if [ -f tck/target/thread-dump.txt ]; then
113+
echo "✅ Thread dump captured ($(wc -l < tck/target/thread-dump.txt) lines)"
114+
fi
115+
else
116+
echo "⚠️ No Quarkus process found for thread dump"
117+
fi
118+
- name: Capture Heap Dump
119+
if: always()
120+
run: |
121+
# Get PID of Quarkus process
122+
QUARKUS_PID=$(pgrep -f "quarkus:dev" || echo "")
123+
if [ -n "$QUARKUS_PID" ]; then
124+
echo "📊 Capturing heap dump for PID $QUARKUS_PID"
125+
jmap -dump:live,format=b,file=tck/target/heap-dump.hprof $QUARKUS_PID || echo "Failed to capture heap dump"
126+
if [ -f tck/target/heap-dump.hprof ]; then
127+
SIZE=$(du -h tck/target/heap-dump.hprof | cut -f1)
128+
echo "✅ Heap dump captured ($SIZE)"
129+
# Compress to reduce artifact size
130+
gzip tck/target/heap-dump.hprof
131+
COMPRESSED_SIZE=$(du -h tck/target/heap-dump.hprof.gz | cut -f1)
132+
echo "✅ Compressed heap dump ($COMPRESSED_SIZE)"
133+
fi
134+
else
135+
echo "⚠️ No Quarkus process found for heap dump"
136+
fi
104137
- name: Stop Quarkus Server
105138
if: always()
106139
run: |
@@ -127,3 +160,19 @@ jobs:
127160
path: tck/target/tck-test.log
128161
retention-days: 7
129162
if-no-files-found: warn
163+
- name: Upload Thread Dump
164+
if: always()
165+
uses: actions/upload-artifact@v4
166+
with:
167+
name: thread-dump-java-${{ matrix.java-version }}
168+
path: tck/target/thread-dump.txt
169+
retention-days: 1
170+
if-no-files-found: warn
171+
- name: Upload Heap Dump
172+
if: always()
173+
uses: actions/upload-artifact@v4
174+
with:
175+
name: heap-dump-java-${{ matrix.java-version }}
176+
path: tck/target/heap-dump.hprof.gz
177+
retention-days: 1
178+
if-no-files-found: warn

tck/src/main/resources/application.properties

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ a2a.executor.core-pool-size=5
88
a2a.executor.max-pool-size=15
99
a2a.executor.keep-alive-seconds=60
1010

11+
# Increase Vert.x worker thread blocking timeout to prevent thread abandonment
12+
# Default is 60s, increase to 300s (5 minutes) to match TCK timeout
13+
quarkus.vertx.max-worker-execute-time=300s
14+
1115
# Enable debug logging for troubleshooting SSE streaming test timeouts
1216
quarkus.log.category."io.a2a.server.requesthandlers".level=DEBUG
1317
quarkus.log.category."io.a2a.server.events".level=DEBUG

0 commit comments

Comments
 (0)