8000 [Bug]: A bug related to fulltext index · Issue #2735 · infiniflow/infinity · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
[Bug]: A bug related to fulltext index #2735
Open
@euvre

Description

@euvre

Is there an existing issue for the same bug?

  • I have checked the existing issues.

Version or Commit ID

main

Actual behavior and How to reproduce it

After execute below code in test_index_parallel.py:

@pytest.mark.parametrize("file_format", ["csv"])
    def test_fulltext_index_rw_parallel(self, get_infinity_connection_pool, file_format):

        def write_worker(connection_pool: ConnectionPool, data, file_path, end_time, thread_id):
            infinity_obj = connection_pool.get_conn()
            db_obj = infinity_obj.get_database("default_db")
            table_obj = db_obj.get_table("test_fulltext_index_parallel")

            while time.time() < end_time:
                operation = random.randint(0, 1)
                if operation == 0:
                    value = []
                    for i in range(len(data["doctitle"])):
                        value.append({"doctitle": data["doctitle"][i],
                                      "docdate": data["docdate"][i], "body": data["body"][i]})
                    table_obj.insert(value)
                    print(f"thread {thread_id}: insert complete")
                if operation == 1:
                    print(f"thread {thread_id}: begin import")
                    table_obj.import_data(file_path, {"delimiter": "\t"})
                    print(f"thread {thread_id}: import complete")

            connection_pool.release_conn(infinity_obj)

        def read_worker(connection_pool: ConnectionPool, end_time):
            infinity_obj = connection_pool.get_conn()
            db_obj = infinity_obj.get_database("default_db")
            table_obj = db_obj.get_table("test_fulltext_index_parallel")

            while time.time() < end_time:
                res, extra_result = table_obj.output(["doctitle", "docdate", "_row_id", "_score"]).match_text(
                    "body^5", "harmful chemical", 3).to_pl()
                print(res)
                time.sleep(0.1)

            connection_pool.release_conn(infinity_obj)

        # prepare data for insert
        column_names = ["doctitle", "docdate", "body"]
        file_path = os.getcwd() + TEST_DATA_DIR + file_format + \
                    "/enwiki_99." + file_format
        df = pandas.read_csv(file_path,
                             delimiter="\t",
                             header=None,
                             names=column_names)
        data = {key: list(value.values())
                for key, value in df.to_dict().items()}

        # create index
        connection_pool = get_infinity_connection_pool
        infinity_obj = connection_pool.get_conn()
        db_obj = infinity_obj.get_database("default_db")
        res = db_obj.drop_table(
            "test_fulltext_index_parallel", ConflictType.Ignore)
        assert res.error_code == ErrorCode.OK
        table_obj = db_obj.create_table("test_fulltext_index_parallel", {
            "doctitle": {"type": "varchar"},
            "docdate": {"type": "varchar"}, "body": {"type": "varchar"}}, ConflictType.Error)
        table_obj.import_data(file_path, {"delimiter": "\t"})
        res = table_obj.create_index("body_index",
                                     index.IndexInfo("body",
                                                     index.IndexType.FullText))
        assert res.error_code == ErrorCode.OK

        threads = []
        end_time = time.time() + kRuningTime
        for i in range(kInsertThreadNum):
            threads.append(Thread(target=write_worker, args=[
                connection_pool, data, file_path, end_time, i]))
        threads.append(Thread(target=read_worker, args=[
            connection_pool, end_time]))
        for i in range(len(threads)):
            threads[i].start()
        for i in range(len(threads)):
            threads[i].join()

        res = db_obj.drop_table(
            "test_fulltext_index_parallel", ConflictType.Error)
        connection_pool.release_conn(infinity_obj)

And then:

psql -h 0.0.0.0 -p 5432
psql (16.9 (Ubuntu 16.9-0ubuntu0.24.04.1), server 14)
Type "help" for help.

inf=> show catalog;
inf=> clean data;

An error will be occured.

[17:12:11.725] [184114] [critical] Error: CleanupNoLock object 0197a131-2823-7090-8c1d-71e4e6d4591e ref count is 1@src/storage/persistence/persistence_manager.cpp:513
[17:12:11.725] [184114] [critical] 0, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(___interceptor_backtrace+0x4a) [0x6551c014723a]
[17:12:11.725] [184114] [critical] 1, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x19e5ea1) [0x6551c0aefea1]
[17:12:11.725] [184114] [critical] 2, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x19e72a4) [0x6551c0af12a4]
[17:12:11.725] [184114] [critical] 3, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x284a302) [0x6551c1954302]
[17:12:11.725] [184114] [critical] 4, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x2855ce3) [0x6551c195fce3]
[17:12:11.725] [184114] [critical] 5, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x5c1044b) [0x6551c4d1a44b]
[17:12:11.725] [184114] [critical] 6, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x21bd56f) [0x6551c12c756f]
[17:12:11.725] [184114] [critical] 7, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x21b6a4b) [0x6551c12c0a4b]
[17:12:11.725] [184114] [critical] 8, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x21b5a4c) [0x6551c12bfa4c]
[17:12:11.725] [184114] [critical] 9, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x21b4082) [0x6551c12be082]
[17:12:11.725] [184114] [critical] 10, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x26ce66b) [0x6551c17d866b]
[17:12:11.725] [184114] [critical] 11, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x26d1802) [0x6551c17db802]
[17:12:11.725] [184114] [critical] 12, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x66c6d92) [0x6551c57d0d92]
[17:12:11.725] [184114] [critical] 13, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x201a78b) [0x6551c112478b]
[17:12:11.725] [184114] [critical] 14, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1395c64) [0x6551c049fc64]
[17:12:11.725] [184114] [critical] 15, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x13954b1) [0x6551c049f4b1]
[17:12:11.725] [184114] [critical] 16, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1e205eb) [0x6551c0f2a5eb]
[17:12:11.725] [184114] [critical] 17, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1e1e665) [0x6551c0f28665]
[17:12:11.725] [184114] [critical] 18, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1e1e06b) [0x6551c0f2806b]
[17:12:11.725] [184114] [critical] 19, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x4b68e70) [0x6551c3c72e70]
[17:12:11.725] [184114] [critical] 20, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x4b687be) [0x6551c3c727be]
[17:12:11.725] [184114] [critical] 21, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x4b673c6) [0x6551c3c713c6]
[17:12:11.725] [184114] [critical] 22, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1c6fb2b) [0x6551c0d79b2b]
[17:12:11.725] [184114] [critical] 23, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1c6f955) [0x6551c0d79955]
[17:12:11.725] [184114] [critical] 24, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1c6f92d) [0x6551c0d7992d]
[17:12:11.725] [184114] [critical] 25, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x1c6f566) [0x6551c0d79566]
[17:12:11.725] [184114] [critical] 26, /home/inf/code/infinity_new/cmake-build-debug/src/infinity(+0x109125d) [0x6551c019b25d]
[17:12:11.725] [184114] [critical] 27, /lib/x86_64-linux-gnu/libc.so.6(+0x9caa4) [0x7f8a2749caa4]
[17:12:11.725] [184114] [critical] 28, /lib/x86_64-linux-gnu/libc.so.6(+0x129c3c) [0x7f8a27529c3c]
[17:12:11.725] [184114] [critical] CleanupNoLock object 0197a131-2823-7090-8c1d-71e4e6d4591e ref count is 1@src/storage/persistence/persistence_manager.cpp:513
UnrecoverableException CleanupNoLock object 0197a131-2823-7090-8c1d-71e4e6d4591e ref count is 1@src/storage/persistence/persistence_manager.cpp:513
[17:12:11.725] [184114] [critical] CleanupNoLock object 0197a131-2823-7090-8c1d-71e4e6d4591e ref count is 1@src/storage/persistence/persistence_manager.cpp:513
Signal: SIGUSR1 (signal SIGUSR1)

Expected behavior

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0