Commit Graph

4 Commits

Author SHA1 Message Date
Azat Khuzhin
99fe4308b5 Fix race in UDF (follow up) 2021-09-01 10:38:46 +03:00
Azat Khuzhin
f342acc2ad Guard UDF container with a lock
Fixes TSAN report [1]:

    WARNING: ThreadSanitizer: data race (pid=436)
      Write of size 8 at 0x7b040076e450 by thread T240:
        ...
        3 DB::UserDefinedFunctionFactory::registerFunction() obj-x86_64-linux-gnu/../src/Interpreters/UserDefinedFunctionFactory.cpp:30:56 (clickhouse+0x1500727f)
        4 DB::InterpreterCreateFunctionQuery::execute() obj-x86_64-linux-gnu/../src/Interpreters/InterpreterCreateFunctionQuery.cpp:37:44 (clickhouse+0x14b1224a)
        5 DB::executeQueryImpl() obj-x86_64-linux-gnu/../src/Interpreters/executeQuery.cpp:573:32 (clickhouse+0x15039241)
        6 DB::executeQuery() obj-x86_64-linux-gnu/../src/Interpreters/executeQuery.cpp:934:30 (clickhouse+0x150376fa)
        7 DB::TCPHandler::runImpl() obj-x86_64-linux-gnu/../src/Server/TCPHandler.cpp:291:24 (clickhouse+0x15a7af2a)

      Previous read of size 8 at 0x7b040076e450 by thread T1370:
        ...
        2 DB::UserDefinedFunctionFactory::tryGet() const obj-x86_64-linux-gnu/../src/Interpreters/UserDefinedFunctionFactory.cpp:65:45 (clickhouse+0x150078a4)
        3 DB::UserDefinedFunctionsMatcher::tryToReplaceFunction() obj-x86_64-linux-gnu/../src/Interpreters/UserDefinedFunctionsVisitor.cpp:39:73 (clickhouse+0x15007cd0)
        4 DB::UserDefinedFunctionsMatcher::visit() obj-x86_64-linux-gnu/../src/Interpreters/UserDefinedFunctionsVisitor.cpp:27:19 (clickhouse+0x15007ba8)
        5 DB::InDepthNodeVisitor<>::visit() obj-x86_64-linux-gnu/../src/Interpreters/InDepthNodeVisitor.h:34:13 (clickhouse+0x14fbcba4)
        ..
        24 DB::executeQueryImpl() obj-x86_64-linux-gnu/../src/Interpreters/executeQuery.cpp:543:28 (clickhouse+0x15038f3b)

  [1]: https://clickhouse-test-reports.s3.yandex.net/0/df1fe27791f82c2a917390faa30716effbd32b8f/stress_test_(thread).html#fail1
2021-08-27 00:39:11 +03:00
Maksim Kita
010d72593f Fixed integration tests 2021-08-23 17:31:58 +03:00
Maksim Kita
01682a86b3 Updated user defined functions implementation 2021-08-19 00:54:55 +03:00