Serialize reference table modifications with node changes & restore point

With Citus MX enabled, when a reference table is modified, it does
some operations on the first worker node(e.g., acquire locks).

If node metadata is locked (via add node or create restore point),
the changes to the reference tables should be blocked.
pull/5912/head
Onder Kalaci 2022-05-16 11:30:30 +02:00
parent 127450466e
commit 0596062f96
2 changed files with 403 additions and 392 deletions

View File

@ -25,10 +25,11 @@ step s1-add-second-worker:
step s2-copy-to-reference-table:
COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5';
<waiting ...>
step s1-commit:
COMMIT;
step s2-copy-to-reference-table: <... completed>
step s2-print-content:
SELECT
nodeport, success, result
@ -69,15 +70,16 @@ step s2-copy-to-reference-table:
step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s2-commit:
COMMIT;
step s2-print-content:
SELECT
nodeport, success, result
@ -123,10 +125,11 @@ step s1-add-second-worker:
step s2-insert-to-reference-table:
INSERT INTO test_reference_table VALUES (6);
<waiting ...>
step s1-commit:
COMMIT;
step s2-insert-to-reference-table: <... completed>
step s2-print-content:
SELECT
nodeport, success, result
@ -167,15 +170,16 @@ step s2-insert-to-reference-table:
step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s2-commit:
COMMIT;
step s2-print-content:
SELECT
nodeport, success, result
@ -429,10 +433,11 @@ step s1-add-second-worker:
step s2-copy-to-reference-table:
COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5';
<waiting ...>
step s1-commit:
COMMIT;
step s2-copy-to-reference-table: <... completed>
step s2-print-content:
SELECT
nodeport, success, result
@ -470,15 +475,16 @@ step s2-copy-to-reference-table:
step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s2-commit:
COMMIT;
step s2-print-content:
SELECT
nodeport, success, result
@ -521,10 +527,11 @@ step s1-add-second-worker:
step s2-insert-to-reference-table:
INSERT INTO test_reference_table VALUES (6);
<waiting ...>
step s1-commit:
COMMIT;
step s2-insert-to-reference-table: <... completed>
step s2-print-content:
SELECT
nodeport, success, result
@ -562,15 +569,16 @@ step s2-insert-to-reference-table:
step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s2-commit:
COMMIT;
step s2-print-content:
SELECT
nodeport, success, result

View File

@ -409,15 +409,16 @@ step s1-insert-ref:
step s2-create-restore:
SELECT 1 FROM citus_create_restore_point('citus-test');
<waiting ...>
step s1-commit:
COMMIT;
step s2-create-restore: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s1-commit:
COMMIT;
starting permutation: s1-begin s1-modify-multiple-ref s2-create-restore s1-commit
create_reference_table
@ -434,15 +435,16 @@ step s1-modify-multiple-ref:
step s2-create-restore:
SELECT 1 FROM citus_create_restore_point('citus-test');
<waiting ...>
step s1-commit:
COMMIT;
step s2-create-restore: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s1-commit:
COMMIT;
starting permutation: s1-begin s1-ddl-ref s2-create-restore s1-commit
create_reference_table
@ -485,15 +487,16 @@ step s1-copy-ref:
step s2-create-restore:
SELECT 1 FROM citus_create_restore_point('citus-test');
<waiting ...>
step s1-commit:
COMMIT;
step s2-create-restore: <... completed>
?column?
---------------------------------------------------------------------
1
(1 row)
step s1-commit:
COMMIT;
starting permutation: s1-begin s1-drop-ref s2-create-restore s1-commit
create_reference_table