mirror of https://github.com/citusdata/citus.git
As of master branch, Citus does all the modifications to replicated tables (e.g., reference tables and distributed tables with replication factor > 1), via 2PC and avoids any shardstate=3. As a side-effect of those changes, handling node failures for replicated tables change. With this PR, when one (or multiple) node failures happen, the users would see query errors on modifications. If the problem is intermitant, that's OK, once the node failure(s) recover by themselves, the modification queries would succeed. If the node failure(s) are permenant, the users should call `SELECT citus_disable_node(...)` to disable the node. As soon as the node is disabled, modification would start to succeed. However, now the old node gets behind. It means that, when the node is up again, the placements should be re-created on the node. First, use `SELECT citus_activate_node()`. Then, use `SELECT replicate_table_shards(...)` to replicate the missing placements on the re-activated node. |
||
---|---|---|
.. | ||
README.md | ||
columnar_index_concurrency.spec | ||
columnar_temp_tables.spec | ||
columnar_vacuum_vs_insert.spec | ||
columnar_write_concurrency.spec | ||
columnar_write_concurrency_index.spec | ||
isolation_add_node_vs_reference_table_operations.spec | ||
isolation_add_remove_node.spec | ||
isolation_blocking_move_multi_shard_commands.spec | ||
isolation_blocking_move_multi_shard_commands_on_mx.spec | ||
isolation_blocking_move_single_shard_commands.spec | ||
isolation_blocking_move_single_shard_commands_on_mx.spec | ||
isolation_cancellation.spec | ||
isolation_citus_dist_activity.spec | ||
isolation_cluster_management.spec | ||
isolation_concurrent_dml.spec | ||
isolation_copy_placement_vs_copy_placement.spec | ||
isolation_copy_placement_vs_modification.spec | ||
isolation_copy_vs_all_on_mx.spec | ||
isolation_create_citus_local_table.spec | ||
isolation_create_distributed_table.spec | ||
isolation_create_restore_point.spec | ||
isolation_create_table_vs_add_remove_node.spec | ||
isolation_data_migration.spec | ||
isolation_ddl_vs_all.spec | ||
isolation_delete_vs_all.spec | ||
isolation_dis2ref_foreign_keys_on_mx.spec | ||
isolation_distributed_deadlock_detection.spec | ||
isolation_distributed_transaction_id.spec | ||
isolation_dml_vs_repair.spec | ||
isolation_drop_alter_index_select_for_update_on_mx.spec | ||
isolation_drop_shards.spec | ||
isolation_drop_vs_all.spec | ||
isolation_dump_global_wait_edges.spec | ||
isolation_dump_local_wait_edges.spec | ||
isolation_ensure_dependency_activate_node.spec | ||
isolation_extension_commands.spec | ||
isolation_fix_partition_shard_index_names.spec | ||
isolation_get_all_active_transactions.spec | ||
isolation_get_distributed_wait_queries_mx.spec | ||
isolation_hash_copy_vs_all.spec | ||
isolation_insert_select_conflict.spec | ||
isolation_insert_select_repartition.spec | ||
isolation_insert_select_vs_all.spec | ||
isolation_insert_select_vs_all_on_mx.spec | ||
isolation_insert_vs_all.spec | ||
isolation_insert_vs_all_on_mx.spec | ||
isolation_insert_vs_vacuum.spec | ||
isolation_master_update_node.spec | ||
isolation_metadata_sync_deadlock.spec | ||
isolation_modify_with_subquery_vs_dml.spec | ||
isolation_multi_shard_modify_vs_all.spec | ||
isolation_multiuser_locking.spec | ||
isolation_mx_common.include.spec | ||
isolation_partitioned_copy_vs_all.spec | ||
isolation_progress_monitoring.spec | ||
isolation_range_copy_vs_all.spec | ||
isolation_rebalancer_deferred_drop.spec | ||
isolation_ref2ref_foreign_keys.spec | ||
isolation_ref2ref_foreign_keys_on_mx.spec | ||
isolation_ref_select_for_update_vs_all_on_mx.spec | ||
isolation_ref_update_delete_upsert_vs_all_on_mx.spec | ||
isolation_reference_copy_vs_all.spec | ||
isolation_reference_on_mx.spec | ||
isolation_replace_wait_function.spec | ||
isolation_replicate_reference_tables_to_coordinator.spec | ||
isolation_replicated_dist_on_mx.spec | ||
isolation_select_for_update.spec | ||
isolation_select_vs_all.spec | ||
isolation_select_vs_all_on_mx.spec | ||
isolation_shard_rebalancer.spec | ||
isolation_shard_rebalancer_progress.spec | ||
isolation_shouldhaveshards.spec | ||
isolation_transaction_recovery.spec | ||
isolation_truncate_vs_all.spec | ||
isolation_truncate_vs_all_on_mx.spec | ||
isolation_turn_mx_off.spec | ||
isolation_turn_mx_on.spec | ||
isolation_undistribute_table.spec | ||
isolation_update_delete_upsert_vs_all_on_mx.spec | ||
isolation_update_node.spec | ||
isolation_update_node_lock_writes.spec | ||
isolation_update_vs_all.spec | ||
isolation_upsert_vs_all.spec | ||
isolation_validate_vs_insert.spec | ||
shared_connection_waits.spec |
README.md
In this folder, all tests which in the format of '*_add.spec' organized according to specific format.
You should use //
in mx files not //
. We preprocess mx files with cpp
to
include isolation_mx_common.include.spec
.
For isolation tests, we selected 'n' representative operations and we aimed to perform all possible pairs of 'n' operations together. So first test just runs first of these 'n' operation with remaining 'n - 1' operation. Similary, second test just runs second operation with remaining 'n - 2' operation. With this logic, we eventually run every selected operation with every other selected operation.