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.
velioglu/release-11.0-2005
Onder Kalaci 2022-05-16 11:30:30 +02:00 committed by Marco Slot
parent 5fe384329e
commit 36f641c586
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: step s2-copy-to-reference-table:
COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5'; COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5';
<waiting ...>
step s1-commit: step s1-commit:
COMMIT; COMMIT;
step s2-copy-to-reference-table: <... completed>
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -69,15 +70,16 @@ step s2-copy-to-reference-table:
step s1-add-second-worker: step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638); SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column? ?column?
--------------------------------------------------------------------- ---------------------------------------------------------------------
1 1
(1 row) (1 row)
step s2-commit:
COMMIT;
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -123,10 +125,11 @@ step s1-add-second-worker:
step s2-insert-to-reference-table: step s2-insert-to-reference-table:
INSERT INTO test_reference_table VALUES (6); INSERT INTO test_reference_table VALUES (6);
<waiting ...>
step s1-commit: step s1-commit:
COMMIT; COMMIT;
step s2-insert-to-reference-table: <... completed>
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -167,15 +170,16 @@ step s2-insert-to-reference-table:
step s1-add-second-worker: step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638); SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column? ?column?
--------------------------------------------------------------------- ---------------------------------------------------------------------
1 1
(1 row) (1 row)
step s2-commit:
COMMIT;
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -429,10 +433,11 @@ step s1-add-second-worker:
step s2-copy-to-reference-table: step s2-copy-to-reference-table:
COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5'; COPY test_reference_table FROM PROGRAM 'echo 1 && echo 2 && echo 3 && echo 4 && echo 5';
<waiting ...>
step s1-commit: step s1-commit:
COMMIT; COMMIT;
step s2-copy-to-reference-table: <... completed>
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -470,15 +475,16 @@ step s2-copy-to-reference-table:
step s1-add-second-worker: step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638); SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column? ?column?
--------------------------------------------------------------------- ---------------------------------------------------------------------
1 1
(1 row) (1 row)
step s2-commit:
COMMIT;
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -521,10 +527,11 @@ step s1-add-second-worker:
step s2-insert-to-reference-table: step s2-insert-to-reference-table:
INSERT INTO test_reference_table VALUES (6); INSERT INTO test_reference_table VALUES (6);
<waiting ...>
step s1-commit: step s1-commit:
COMMIT; COMMIT;
step s2-insert-to-reference-table: <... completed>
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result
@ -562,15 +569,16 @@ step s2-insert-to-reference-table:
step s1-add-second-worker: step s1-add-second-worker:
SELECT 1 FROM master_add_node('localhost', 57638); SELECT 1 FROM master_add_node('localhost', 57638);
<waiting ...>
step s2-commit:
COMMIT;
step s1-add-second-worker: <... completed>
?column? ?column?
--------------------------------------------------------------------- ---------------------------------------------------------------------
1 1
(1 row) (1 row)
step s2-commit:
COMMIT;
step s2-print-content: step s2-print-content:
SELECT SELECT
nodeport, success, result nodeport, success, result

View File

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