Skip to content

faketime tests stall when S3 support is enabled #4956

@jdblischak

Description

@jdblischak

x-ref https://app.shortcut.com/tiledb-inc/story/47373


In my nightly builds, if I build with S3 support (TILEDB_S3=ON), the faketime tests added in #4883 stall. They pass when S3 support is disabled.

xref: https://github.com/jdblischak/centralized-tiledb-nightlies/issues/5#issuecomment-2096691606

Below is a reproducible example I created in an Ubuntu Docker image. Note that I had to install more dependencies than those listed in the Prerequisites of BUILD.md.

docker run --rm -it ubuntu:22.04

# Setup
apt-get update
apt-get install --yes cmake curl g++ gcc git pkg-config tar unzip zip
git clone https://github.com/TileDB-Inc/TileDB.git
cd TileDB
git log -n 1 --oneline
## 9a4b88517 (HEAD -> dev, origin/dev, origin/HEAD) Remove deprecated APIs from tests, part 2. (#4951)

# without S3 support
cmake -B build-libtiledb \
  -D TILEDB_WERROR=ON \
  -D TILEDB_SERIALIZATION=ON \
  -D CMAKE_BUILD_TYPE=Release \
  -D VCPKG_TARGET_TRIPLET=x64-linux-release

cmake --build build-libtiledb -j $(nproc) --config Release

cmake --build build-libtiledb --target check --config Release
## 2: 0.066 s: C API: Test consolidation, fragments/commits out of order
## 2: 0.000 s: - sparse array
## 2:
## 2: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
## 2: tiledb_unit is a Catch2 v3.4.0 host application.
## 2: Run with -? for options
## 2:
## 2: -------------------------------------------------------------------------------
## 2: C API: Test vacuuming leaves array dir in a consistent state
## 2: -------------------------------------------------------------------------------
## 2: /TileDB/test/src/unit-capi-consolidation.cc:7378
## 2: ...............................................................................
## 2:
## 2: /TileDB/test/src/unit-capi-consolidation.cc:4656: FAILED:
## 2:   REQUIRE( rc == (expect_fail ? (-1) : (0)) )
## 2: with expansion:
## 2:   0 == -1
## 2:
## 2: terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
## 2:   what():  filesystem error: cannot set permissions: No such file or directory [/TileDB/test/tiledb_test/test_consolidate_sparse_array/__fragments/__1715102401556_1715102401556_5b878658b88da5efa423d8eb94514abe_21]
## 2: /TileDB/test/src/unit-capi-consolidation.cc:4656: FAILED:
## 2:   {Unknown expression after the reported line}
## 2: due to a fatal error condition:
## 2:   SIGABRT - Abort (abnormal termination) signal
## 2:
## 2: 0.000 s: C API: Test vacuuming leaves array dir in a consistent state
## 2: ===============================================================================
## 2: test cases:     341 |     340 passed | 1 failed
## 2: assertions: 2798035 | 2798033 passed | 2 failed
## 2:
## 2/3 Test #2: tiledb_unit ......................Subprocess aborted***Exception:  51.68 sec

# I don't know what the above test failure is about. I haven't observed it
# in my nightlies

# with S3 support
cmake -B build-libtiledb-s3 \
  -D TILEDB_WERROR=ON \
  -D TILEDB_SERIALIZATION=ON \
  -D CMAKE_BUILD_TYPE=Release \
  -D VCPKG_TARGET_TRIPLET=x64-linux-release \
  -D TILEDB_S3=ON

cmake --build build-libtiledb-s3 -j $(nproc) --config Release

cmake --build build-libtiledb-s3 --target check --config Release
## [100%] Built target tests
## UpdateCTestConfiguration  from :/TileDB/build-libtiledb-s3/tiledb/test/DartConfiguration.tcl
## UpdateCTestConfiguration  from :/TileDB/build-libtiledb-s3/tiledb/test/DartConfiguration.tcl
## Test project /TileDB/build-libtiledb-s3/tiledb/test
## Constructing a list of tests
## Done constructing a list of tests
## Updating test list for fixtures
## Added 0 tests to meet fixture requirements
## Checking test dependency graph...
## Checking test dependency graph end
## test 1
##     Start 1: tiledb_timing_unit
##
## 1: Test command: /TileDB/build-libtiledb-s3/tiledb/test/tiledb_unit "--durations=yes" "[sub-millisecond]"
## 1: Environment variable modifications:
## 1:  FAKETIME=set:2020-12-24 20:30:00
## 1:  LD_PRELOAD=set:/TileDB/build-libtiledb-s3/vcpkg_installed/x64-linux-release/lib/libfaketime.so
## 1: Test timeout computed to be: 10000000

# it stalls at this point and never completes

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions