citusdata / citusdata/citus

create_distributed_table with long names may lead to self-deadlocks

Open
#4,739 2 comments 0 reactions 0 assignees View on GitHub
bug
Dominant language
C
Stars
12.8k
Forks
794
Avg merge
2d 14h
Merged PRs (30d)
31

Description

This is mainly because create_distributed_table cannot use sequential mode (or max_adaptive_executor_pool_size) when there is data inside.

```SQL
create table name_lengths(a int);
insert into name_lengths select i from generate_series(0,10000)i;
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
select create_distributed_table('name_len_12345678901234567890123456789012345678901234567890', 'a');
ERROR: canceling the transaction since it was involved in a distributed deadlock
Time: 1474.144 ms (00:01.474)

```

To prevent:
```SQL
SET citus.multi_shard_modify_mode TO sequential;
create table name_lengths(a int);
ALTER TABLE name_lengths RENAME TO name_len_12345678901234567890123456789012345678901234567890;
select create_distributed_table('name_len_12345678901234567890123456789012345678901234567890', 'a');
insert into name_len_12345678901234567890123456789012345678901234567890 select i from generate_series(0,10000)i;

```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.