Skip to content

Commit 49a1d3f

Browse files
committed
Update WriterFuzzer.cpp
Update scheduled.yml
1 parent 69538a6 commit 49a1d3f

File tree

2 files changed

+92
-8
lines changed

2 files changed

+92
-8
lines changed

.github/workflows/scheduled.yml

+73
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,13 @@ jobs:
319319
path: velox/_build/debug//velox/exec/tests/velox_row_number_fuzzer_test
320320
retention-days: "${{ env.RETENTION }}"
321321

322+
- name: Upload writer fuzzer
323+
uses: actions/upload-artifact@v4
324+
with:
325+
name: writer
326+
path: velox/_build/debug/velox/functions/prestosql/fuzzer/velox_writer_fuzzer_test
327+
retention-days: "${{ env.RETENTION }}"
328+
322329
presto-fuzzer-run:
323330
name: Presto Fuzzer
324331
if: ${{ needs.compile.outputs.presto_bias != 'true' }}
@@ -892,3 +899,69 @@ jobs:
892899
path: |
893900
/tmp/window_fuzzer_repro
894901
/tmp/server.log
902+
903+
presto-java-writer-fuzzer-run:
904+
name: Writer Fuzzer with Presto as source of truth
905+
needs: compile
906+
runs-on: ubuntu-latest
907+
container: ghcr.io/facebookincubator/velox-dev:presto-java
908+
timeout-minutes: 120
909+
env:
910+
CCACHE_DIR: "${{ github.workspace }}/.ccache/"
911+
LINUX_DISTRO: "centos"
912+
steps:
913+
914+
- name: Download writer fuzzer
915+
uses: actions/download-artifact@v4
916+
with:
917+
name: writer
918+
919+
- name: "Checkout Repo"
920+
uses: actions/checkout@v4
921+
with:
922+
path: velox
923+
submodules: 'recursive'
924+
ref: "${{ inputs.ref }}"
925+
926+
- name: Fix git permissions
927+
# Usually actions/checkout does this but as we run in a container
928+
# it doesn't work
929+
run: git config --global --add safe.directory /__w/velox/velox/velox
930+
931+
932+
- name: "Run Writer Fuzzer"
933+
run: |
934+
cd velox
935+
cp ./scripts/presto/etc/hive.properties $PRESTO_HOME/etc/catalog
936+
ls -lR $PRESTO_HOME/etc
937+
echo "jvm config content:"
938+
cat $PRESTO_HOME/etc/jvm.config
939+
$PRESTO_HOME/bin/launcher run -v > /tmp/server.log 2>&1 &
940+
ls -lR /var/log
941+
# Sleep for 60 seconds to allow Presto server to start.
942+
sleep 60
943+
/opt/presto-cli --version
944+
/opt/presto-cli --server 127.0.0.1:8080 --execute 'CREATE SCHEMA hive.tpch;'
945+
cd -
946+
mkdir -p /tmp/writer_fuzzer_repro/logs/
947+
chmod -R 777 /tmp/writer_fuzzer_repro
948+
chmod +x velox_writer_fuzzer_test
949+
./velox_writer_fuzzer_test \
950+
--seed ${RANDOM} \
951+
--duration_sec $DURATION \
952+
--minloglevel=0 \
953+
--stderrthreshold=2 \
954+
--req_timeout_ms 60000 \
955+
--log_dir=/tmp/writer_fuzzer_repro/logs \
956+
--presto_url=http://127.0.0.1:8080 \
957+
&& echo -e "\n\Writer fuzzer run finished successfully."
958+
959+
- name: Archive writer production artifacts
960+
if: ${{ !cancelled() }}
961+
uses: actions/upload-artifact@v4
962+
with:
963+
name: presto-sot-writer-fuzzer-failure-artifacts
964+
path: |
965+
/tmp/writer_fuzzer_repro
966+
/tmp/server.log
967+
/var/log

velox/exec/fuzzer/WriterFuzzer.cpp

+19-8
Original file line numberDiff line numberDiff line change
@@ -440,9 +440,9 @@ void WriterFuzzer::verifyWriter(
440440

441441
const auto dropSql = "DROP TABLE IF EXISTS tmp_write";
442442
const auto sql = referenceQueryRunner_->toSql(plan).value();
443-
referenceQueryRunner_->execute(dropSql);
444443
std::multiset<std::vector<variant>> expectedResult;
445444
try {
445+
referenceQueryRunner_->execute(dropSql);
446446
expectedResult =
447447
referenceQueryRunner_->execute(sql, input, plan->outputType());
448448
} catch (...) {
@@ -482,11 +482,16 @@ void WriterFuzzer::verifyWriter(
482482
if (bucketCount > 0) {
483483
bucketSql = ", \"$bucket\"";
484484
}
485-
auto referenceData = referenceQueryRunner_->execute(
486-
"SELECT *" + bucketSql + " FROM tmp_write");
487-
VELOX_CHECK(
488-
assertEqualResults(referenceData, {actual}),
489-
"Velox and reference DB results don't match");
485+
try {
486+
auto referenceData = referenceQueryRunner_->execute(
487+
"SELECT *" + bucketSql + " FROM tmp_write");
488+
VELOX_CHECK(
489+
assertEqualResults(referenceData, {actual}),
490+
"Velox and reference DB results don't match");
491+
} catch (...) {
492+
LOG(WARNING) << "Query failed in the reference DB";
493+
return;
494+
}
490495

491496
// 4. Verifies sorting.
492497
if (sortBy.size() > 0) {
@@ -513,8 +518,14 @@ void WriterFuzzer::verifyWriter(
513518
partitionKeys,
514519
sortBy);
515520

516-
const auto referenceResult = referenceQueryRunner_->execute(
517-
singleSplitReferenceSql, "task_concurrency=1");
521+
std::vector<velox::RowVectorPtr> referenceResult;
522+
try {
523+
referenceResult = referenceQueryRunner_->execute(
524+
singleSplitReferenceSql, "task_concurrency=1");
525+
} catch (...) {
526+
LOG(WARNING) << "Query failed in the reference DB";
527+
return;
528+
}
518529
const auto& referenceData = referenceResult.at(0);
519530
for (int i = 1; i < referenceResult.size(); ++i) {
520531
referenceData->append(referenceResult.at(i).get());

0 commit comments

Comments
 (0)