@@ -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
0 commit comments