@@ -274,9 +274,6 @@ jobs:
274274 - name : Run all examples
275275 id : run_examples
276276 shell : bash
277- env :
278- # Increase JVM heap for large CSV imports (example 04)
279- ARCADEDB_JVM_ARGS : " -Xmx8g -Xms8g"
280277 run : |
281278 cd bindings/python/examples
282279
@@ -318,41 +315,49 @@ jobs:
318315 example_args="--dataset movielens-small --export"
319316 example_name="$example (movielens-small dataset with export)"
320317 timeout_duration=900 # 15 minutes
318+ example_jvm_args="-Xmx8g -Xms8g"
321319 ;;
322320 "05_csv_import_graph.py")
323321 example_args="--dataset movielens-small --method sql --import-jsonl ./exports/movielens_small_db.jsonl.tgz --export"
324322 example_name="$example (movielens-small dataset, embedded sql method, import/export)"
325323 timeout_duration=900 # 15 minutes
324+ example_jvm_args=""
326325 ;;
327326 "06_vector_search_recommendations.py")
328327 example_args="--import-jsonl ./exports/movielens_graph_small_db.jsonl.tgz"
329328 example_name="$example (vector search, import from JSONL)"
330329 timeout_duration=900 # 15 minutes
330+ example_jvm_args=""
331331 ;;
332332 "07_stackoverflow_tables_oltp.py")
333333 example_args="--dataset stackoverflow-tiny --db arcadedb --threads 1 --transactions 1000 --batch-size 500 --mem-limit 2g --run-label ci07"
334334 example_name="$example (stackoverflow-tiny, arcadedb, minimal oltp)"
335335 timeout_duration=900
336+ example_jvm_args=""
336337 ;;
337338 "08_stackoverflow_tables_olap.py")
338339 example_args="--dataset stackoverflow-tiny --db arcadedb --threads 1 --batch-size 500 --query-runs 1 --query-order fixed --mem-limit 2g --run-label ci08"
339340 example_name="$example (stackoverflow-tiny, arcadedb, minimal olap)"
340341 timeout_duration=900
342+ example_jvm_args=""
341343 ;;
342344 "09_stackoverflow_graph_oltp.py")
343345 example_args="--dataset stackoverflow-tiny --db arcadedb --arcadedb-oltp-language cypher --threads 1 --transactions 1000 --batch-size 500 --mem-limit 2g --run-label ci09"
344346 example_name="$example (stackoverflow-tiny graph oltp, arcadedb cypher, minimal)"
345347 timeout_duration=900
348+ example_jvm_args=""
346349 ;;
347350 "10_stackoverflow_graph_olap.py")
348351 example_args="--dataset stackoverflow-tiny --db arcadedb_cypher --threads 1 --batch-size 500 --query-runs 1 --query-order fixed --mem-limit 2g --run-label ci10"
349352 example_name="$example (stackoverflow-tiny graph olap, arcadedb cypher, minimal)"
350353 timeout_duration=900
354+ example_jvm_args=""
351355 ;;
352356 "11_vector_index_build.py")
353357 example_args="--backend arcadedb --dataset stackoverflow-tiny --threads 1 --mem-limit 2g --batch-size 500 --max-connections 16 --beam-width 100 --quantization NONE --run-label ci11_arcadedb"
354358 example_name="$example (vector build, arcadedb backend, minimal)"
355359 timeout_duration=1200
360+ example_jvm_args=""
356361 ;;
357362 "12_vector_search.py")
358363 db_path=$(find ./my_test_databases -maxdepth 1 -type d -name 'backend=arcadedb_dataset=stackoverflow-tiny_*run=ci11_arcadedb' | head -n 1)
@@ -365,31 +370,37 @@ jobs:
365370 example_args="--backend arcadedb --dataset stackoverflow-tiny --db-path $db_path --overquery-factors 1 --k 10 --query-limit 100 --query-runs 1 --query-order fixed --threads 1 --mem-limit 2g --run-label ci12_arcadedb"
366371 example_name="$example (vector search, arcadedb backend, minimal)"
367372 timeout_duration=1200
373+ example_jvm_args=""
368374 ;;
369375 "13_stackoverflow_hybrid_queries.py")
370376 example_args="--dataset stackoverflow-tiny --batch-size 500 --encode-batch-size 64 --top-k 5 --candidate-limit 100 --min-reputation 100 --infer-sample-limit 5000 --run-label ci13"
371377 example_name="$example (hybrid pipeline, tiny + minimal limits)"
372378 timeout_duration=1800
379+ example_jvm_args=""
373380 ;;
374381 "14_lifecycle_timing.py")
375- example_args="--runs 1 --table-records 2000 --graph-vertices 500 --vector-records 500 --vector-dimensions 32 --query-runs 10 --jvm-heap 1g "
382+ example_args="--runs 1 --table-records 2000 --graph-vertices 500 --vector-records 500 --vector-dimensions 32 --query-runs 10 --jvm-heap 4g "
376383 example_name="$example (lifecycle benchmark, minimal)"
377384 timeout_duration=900
385+ example_jvm_args=""
378386 ;;
379387 "15_import_database_vs_transactional_table_ingest.py")
380- example_args="--rows-per-table 2000 --tables 2 --columns 6 --string-size 32 --batch-size 500 --async-parallel 1 --parallel 1 --heap-size 2g --work-dir ./my_test_databases/import_vs_txn_dummy_ci"
388+ example_args="--rows-per-table 2000 --tables 2 --columns 6 --string-size 32 --batch-size 500 --async-parallel 1 --parallel 1 --heap-size 4g --work-dir ./my_test_databases/import_vs_txn_dummy_ci"
381389 example_name="$example (table ingest benchmark, minimal)"
382390 timeout_duration=1200
391+ example_jvm_args=""
383392 ;;
384393 "16_import_database_vs_transactional_graph_ingest.py")
385- example_args="--vertices 2000 --edges 4000 --vertex-int-props 3 --vertex-str-props 2 --edge-int-props 1 --edge-str-props 1 --string-size 32 --batch-size 500 --async-parallel 1 --parallel 1 --heap-size 2g --work-dir ./my_test_databases/import_vs_txn_graph_ci"
394+ example_args="--vertices 2000 --edges 4000 --vertex-int-props 3 --vertex-str-props 2 --edge-int-props 1 --edge-str-props 1 --string-size 32 --batch-size 500 --async-parallel 1 --parallel 1 --heap-size 4g --work-dir ./my_test_databases/import_vs_txn_graph_ci"
386395 example_name="$example (graph ingest benchmark, minimal)"
387396 timeout_duration=1200
397+ example_jvm_args=""
388398 ;;
389399 *)
390400 example_args=""
391401 example_name="$example"
392402 timeout_duration=900 # 15 minutes default
403+ example_jvm_args=""
393404 ;;
394405 esac
395406
@@ -400,11 +411,23 @@ jobs:
400411 echo "----------------------------------------"
401412
402413 # Run the example with appropriate parameters
403- if $TIMEOUT_CMD $timeout_duration python "$example" $example_args > "$log_file" 2>&1; then
414+ if [ -n "$example_jvm_args" ]; then
415+ if ARCADEDB_JVM_ARGS="$example_jvm_args" JAVA_TOOL_OPTIONS="" _JAVA_OPTIONS="" $TIMEOUT_CMD $timeout_duration python "$example" $example_args > "$log_file" 2>&1; then
416+ exit_code=0
417+ else
418+ exit_code=$?
419+ fi
420+ else
421+ if ARCADEDB_JVM_ARGS="" JAVA_TOOL_OPTIONS="" _JAVA_OPTIONS="" $TIMEOUT_CMD $timeout_duration python "$example" $example_args > "$log_file" 2>&1; then
422+ exit_code=0
423+ else
424+ exit_code=$?
425+ fi
426+ fi
427+ if [ $exit_code -eq 0 ]; then
404428 echo "✅ PASSED: $example_name" | tee -a $results_file
405429 passed=$((passed + 1))
406430 else
407- exit_code=$?
408431 if [ $exit_code -eq 124 ]; then
409432 echo "⏱️ TIMEOUT: $example_name (exceeded $((timeout_duration/60)) minutes)" | tee -a $results_file
410433 failed=$((failed + 1))
0 commit comments