diff --git a/python_tests/test_storage_stats.py b/python_tests/test_storage_stats.py index 3c0d4cc2..447af92b 100644 --- a/python_tests/test_storage_stats.py +++ b/python_tests/test_storage_stats.py @@ -69,12 +69,12 @@ def test_io_operation_stability(db0_large_lang_cache_no_autocommit): number = (i*iterations + j)%indexes_count index_container = indexes.indexes[number] now = datetime.now() - new_value = Value(index_number=number, date=now, value=list_value) + new_value = Value(index_number=number, date=now, value=BYTES) index_container.index.add(now, new_value) # calculate objects per second stop = datetime.now() - seconds = (stop - start).miliseconds / 1000.0 + seconds = (stop - start).seconds print(f" Objects per second: {iterations / seconds}") # commit changes diff --git a/src/dbzero/core/storage/CFile.cpp b/src/dbzero/core/storage/CFile.cpp index e6ce4649..1969f53d 100644 --- a/src/dbzero/core/storage/CFile.cpp +++ b/src/dbzero/core/storage/CFile.cpp @@ -215,8 +215,13 @@ namespace db0 flush(lock); } if (address != m_file_pos) { + // static counter of random read operations + setFilePos(address, lock); ++m_rand_read_ops; + if (m_rand_read_ops > 3) { + throw std::runtime_error("Too many random read operations"); + } } assert(m_file_pos == (std::uint64_t)ftell(m_file)); if (fread(buffer, size, 1, m_file) != 1) {