From d657dfbf66713617b045396742f4d638796a7c0d Mon Sep 17 00:00:00 2001 From: Pankaj Singh Date: Mon, 28 Oct 2024 18:54:58 -0700 Subject: [PATCH] fix merge_flat_ondisk stress run failures (#3999) Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/3999 Fixed the bug causing `merge_flat_ondisk` stress run failures. Running multiple `merge_flat_ondisk` tests simultaneously fails which is causing buck stress-run failures. https://www.internalfb.com/intern/test/562950025349567/ Root cause: we were updating input copy (which was discarded) of the filename template instead of the local copy. Reviewed By: asadoughi Differential Revision: D65074463 fbshipit-source-id: 9f86deeb56975a3be7a15a8f56d602463cad61af --- tests/test_merge.cpp | 6 +++--- tests/test_util.h | 7 +++---- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/tests/test_merge.cpp b/tests/test_merge.cpp index cd13f907d..9bb43824e 100644 --- a/tests/test_merge.cpp +++ b/tests/test_merge.cpp @@ -60,7 +60,7 @@ struct CommonData { }; CommonData cd; - +std::string temp_filename_template = "/tmp/faiss_tmp_XXXXXX"; /// perform a search on shards, then merge and search again and /// compare results. int compare_merged( @@ -71,7 +71,7 @@ int compare_merged( std::vector refD(k * nq); index_shards->search(nq, cd.queries.data(), k, refD.data(), refI.data()); - Tempfilename filename(&temp_file_mutex, "/tmp/faiss_tmp_XXXXXX"); + Tempfilename filename(&temp_file_mutex, temp_filename_template); std::vector newI(k * nq); std::vector newD(k * nq); @@ -191,7 +191,7 @@ TEST(MERGE, merge_flat_vt) { TEST(MERGE, merge_flat_ondisk) { faiss::IndexShards index_shards(d, false, false); index_shards.own_indices = true; - Tempfilename filename(&temp_file_mutex, "/tmp/faiss_tmp_XXXXXX"); + Tempfilename filename(&temp_file_mutex, temp_filename_template); for (int i = 0; i < nindex; i++) { auto ivf = new faiss::IndexIVFFlat(&cd.quantizer, d, nlist); diff --git a/tests/test_util.h b/tests/test_util.h index ff76ed3e9..75ff9afcb 100644 --- a/tests/test_util.h +++ b/tests/test_util.h @@ -10,17 +10,16 @@ #include #include -#include struct Tempfilename { pthread_mutex_t* mutex; std::string filename; - Tempfilename(pthread_mutex_t* mutex, std::string filename) { + Tempfilename(pthread_mutex_t* mutex, std::string filename_template) { this->mutex = mutex; - this->filename = filename; + this->filename = filename_template; pthread_mutex_lock(mutex); - int fd = mkstemp(&filename[0]); + int fd = mkstemp(&this->filename[0]); close(fd); pthread_mutex_unlock(mutex); }