-
Notifications
You must be signed in to change notification settings - Fork 737
Closed
Labels
Description
Postgres has able to manage own lock by function calls.
https://www.postgresql.org/docs/14/functions-admin.html
SELECT /* SqlBagOStuff::doLock */ (CASE WHEN pg_try_advisory_lock('697679120691475611') THEN EXTRACT(epoch from clock_timestamp()) ELSE NULL END); -- блокировки, процесс падает, корка не собирается - надо собрать
One of the functions is pg_try_advisory_lock. pg_try_advisory_lock used by mediawiki.
Now YBD failed with segfault while use the function.
First step: fix segfault.
Target state: implement lock logic, for example by coordination service.
Stacktrace
#0 hash_search (hashp=0x0, keyPtr=keyPtr@entry=0x7fbadac43560, action=action@entry=HASH_ENTER, foundPtr=foundPtr@entry=0x7fbadac43503)
at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/utils/hash/dynahash.c:961
#1 0x00000000279a8924 in LockAcquireExtended (locktag=locktag@entry=0x7fbadac435b8, lockmode=lockmode@entry=7, sessionLock=true, dontWait=true, reportMemoryError=true,
locallockp=locallockp@entry=0x0) at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/storage/lmgr/lock.c:826
#2 0x00000000279a883e in LockAcquire (locktag=0x0, locktag@entry=0x7fbadac435b8, lockmode=-624675488, lockmode@entry=7, sessionLock=true, dontWait=true)
at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/storage/lmgr/lock.c:751
#3 0x0000000027a1ef76 in pg_try_advisory_lock_int8 (fcinfo=<optimized out>)
at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/postgresql/src/backend/utils/adt/lockfuncs.c:766
#4 0x00000000275a942e in NYql::TPgResolvedCall<false>::DoCall (this=0x54f33aa0a500, callInfo=...) at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp:1138
#5 NYql::TPgResolvedCall<false>::DoCalculate (this=0x54f33aa0a500, compCtx=...) at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp:1124
#6 0x00000000275a8c3f in NKikimr::NMiniKQL::TMutableComputationNode<NYql::TPgResolvedCall<false>>::GetValue(NKikimr::NMiniKQL::TComputationContext&) const (this=0x0, compCtx=...)
at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:214
#7 0x00000000275ac5e9 in NYql::TFromPg<(NYql::NUdf::EDataSlot)0, false>::DoCalculate (this=<optimized out>, compCtx=...)
at /home/rekby/ydbwork/ydb/ydb/library/yql/parser/pg_wrapper/comp_factory.cpp:1987
#8 0x00000000275ac184 in NKikimr::NMiniKQL::TMutableComputationNode<NYql::TFromPg<(NYql::NUdf::EDataSlot)0, false>>::GetValue(NKikimr::NMiniKQL::TComputationContext&) const (
this=0x0, compCtx=...) at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:217
#9 0x000000001fc0b886 in NKikimr::NMiniKQL::(anonymous namespace)::TCoalesceWrapper<true>::DoCalculate (this=0x54f33067d8c0, compCtx=...)
at /-B/ydb/library/yql/minikql/comp_nodes/llvm14/mkql_coalesce.cpp:21
#10 NKikimr::NMiniKQL::TBinaryComputationNode<NKikimr::NMiniKQL::(anonymous namespace)::TCoalesceWrapper<true>>::GetValue(NKikimr::NMiniKQL::TComputationContext&) const (
this=0x54f33067d8c0, ctx=...) at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:767
#11 0x0000000020173f4f in NKikimr::NMiniKQL::(anonymous namespace)::TIfWrapper<false>::DoCalculate (this=0x54f33a797380, ctx=...)
at /-B/ydb/library/yql/minikql/comp_nodes/llvm14/mkql_if.cpp:23
#12 0x000000002017335f in NKikimr::NMiniKQL::TMutableComputationNode<NKikimr::NMiniKQL::(anonymous namespace)::TIfWrapper<false>>::GetValue(NKikimr::NMiniKQL::TComputationContext&) const (this=0x0, compCtx=...) at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:214
#13 0x000000001aab2c26 in NKikimr::NMiniKQL::TArrayNode::DoCalculate (this=<optimized out>, ctx=...)
at /-B/ydb/library/yql/minikql/computation/llvm14/mkql_computation_node_holders_codegen.cpp:244
#14 0x000000001aab24ef in NKikimr::NMiniKQL::TMutableComputationNode<NKikimr::NMiniKQL::TArrayNode>::GetValue (this=0x0, compCtx=...)
at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:214
#15 0x000000001aab2c26 in NKikimr::NMiniKQL::TArrayNode::DoCalculate (this=<optimized out>, ctx=...)
at /-B/ydb/library/yql/minikql/computation/llvm14/mkql_computation_node_holders_codegen.cpp:244
#16 0x000000001aab24ef in NKikimr::NMiniKQL::TMutableComputationNode<NKikimr::NMiniKQL::TArrayNode>::GetValue (this=0x0, compCtx=...)
at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:214
#17 0x00000000201889db in NKikimr::NMiniKQL::(anonymous namespace)::TIteratorWrapper::DoCalculate (this=<optimized out>, ctx=...)
at /-B/ydb/library/yql/minikql/comp_nodes/llvm14/mkql_iterator.cpp:21
#18 0x0000000020187ef0 in NKikimr::NMiniKQL::TMutableComputationNode<NKikimr::NMiniKQL::(anonymous namespace)::TIteratorWrapper>::GetValue (this=<optimized out>, compCtx=...)
at /home/rekby/ydbwork/ydb/ydb/library/yql/minikql/computation/mkql_computation_node_impl.h:214
#19 0x000000001acfa617 in NKikimr::NMiniKQL::(anonymous namespace)::TComputationGraph::GetValue (this=0x54f328fcf830)
at /-B/ydb/library/yql/minikql/computation/llvm14/mkql_computation_node_graph.cpp:623
#20 0x00000000215cf8f2 in NYql::NDq::TDqTaskRunner::Run (this=0x54f33fbf5700) at /home/rekby/ydbwork/ydb/ydb/library/yql/dq/runtime/dq_tasks_runner.cpp:703
#21 0x0000000026180498 in NYql::NDq::TDqSyncComputeActorBase<NKikimr::NKqp::TKqpComputeActor>::DoExecuteImpl (this=0x54f33e6a3000)
at /home/rekby/ydbwork/ydb/ydb/library/yql/dq/actors/compute/dq_sync_compute_actor_base.h:52
#22 0x000000002617fd40 in NYql::NDq::TDqComputeActorBase<NKikimr::NKqp::TKqpComputeActor, NYql::NDq::TComputeActorAsyncInputHelperForTaskRunner>::DoExecute (this=0x54f33e6a3000)
at /home/rekby/ydbwork/ydb/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h:297
#23 0x0000000026190c6e in NYql::NDq::TDqComputeActorBase<NKikimr::NKqp::TKqpComputeActor, NYql::NDq::TComputeActorAsyncInputHelperForTaskRunner>::HandleExecuteBase (
--Type <RET> for more, q to quit, c to continue without paging--
this=0x54f33e6a3000, ev=...) at /home/rekby/ydbwork/ydb/ydb/library/yql/dq/actors/compute/dq_compute_actor_impl.h:1002
#24 0x000000002617d607 in NKikimr::NKqp::TKqpComputeActor::StateFunc (this=0x54f33e6a3000, ev=TAutoPtr<NActors::IEventHandle> = {...})
at /home/rekby/ydbwork/ydb/ydb/core/kqp/compute_actor/kqp_pure_compute_actor.cpp:133
#25 0x0000000016cd4ae3 in NActors::TGenericExecutorThread::Execute<NActors::TMailboxTable::THTSwapMailbox> (this=this@entry=0x54f33cfc0b00, mailbox=0x26d7fd44800,
hint=hint@entry=4384, isTailExecution=<optimized out>) at /home/rekby/ydbwork/ydb/ydb/library/actors/core/executor_thread.cpp:244
#26 0x0000000016cccb55 in NActors::TGenericExecutorThread::ProcessExecutorPool(NActors::IExecutorPool*)::$_0::operator()(unsigned int, bool) const (this=this@entry=0x7fbadac43fa0,
activation=activation@entry=4384, isTailExecution=false) at /home/rekby/ydbwork/ydb/ydb/library/actors/core/executor_thread.cpp:425
#27 0x0000000016ccc542 in NActors::TGenericExecutorThread::ProcessExecutorPool (this=this@entry=0x54f33cfc0b00, pool=<optimized out>)
at /home/rekby/ydbwork/ydb/ydb/library/actors/core/executor_thread.cpp:478
#28 0x0000000016ccd439 in NActors::TExecutorThread::ThreadProc (this=0x54f33cfc0b00) at /home/rekby/ydbwork/ydb/ydb/library/actors/core/executor_thread.cpp:504
#29 0x0000000015ca039c in (anonymous namespace)::TPosixThread::ThreadProxy (arg=0x54f33f583ab0) at /home/rekby/ydbwork/ydb/util/system/thread.cpp:244
#30 0x00007fbae2e8eac3 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#31 0x00007fbae2f20850 in ?? () from /lib/x86_64-linux-gnu/libc.so.6