14f92b4a0f
Fixes root cause of a cascade of failures in replication code: - Replica handling of deleting an edge is now corrected. Now tolerant of multiple edges of the same relationship type. - Improved robustness: correct exception handling around failed stream of current WAL file. This now means a REPLICA failure will no longer prevent transactions on MAIN from performing WAL writes. - Slightly better diagnostic messages, not user friendly but helps get developer to correct root cause quicker. - Proactively remove vertex+edges during Abort rather than defer to GC to do that work, this included fixing constraints and indexes to be safe. Co-authored-by: Andreja Tonev <andreja.tonev@memgraph.io>
108 lines
4.1 KiB
YAML
108 lines
4.1 KiB
YAML
template_test_nodes_query: &template_test_nodes_query
|
|
- query: "MATCH (n) RETURN count(n);"
|
|
expected: 1000
|
|
template_test_edge_query: &template_test_edges_query
|
|
- query: "MATCH (n)-[r]->(m) RETURN count(r);"
|
|
expected: 5000
|
|
template_validation_queries: &template_validation_queries
|
|
validation_queries:
|
|
- <<: *template_test_nodes_query
|
|
- <<: *template_test_edges_query
|
|
template_simple_cluster: &template_simple_cluster
|
|
cluster:
|
|
replica_1:
|
|
args: [ "--bolt-port", "7688", "--log-level=TRACE" ]
|
|
log_file: "replication-e2e-replica1.log"
|
|
setup_queries: [ "SET REPLICATION ROLE TO REPLICA WITH PORT 10001;" ]
|
|
replica_2:
|
|
args: ["--bolt-port", "7689", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica2.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10002;"]
|
|
main:
|
|
args: ["--bolt-port", "7687", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-main.log"
|
|
setup_queries: [
|
|
"REGISTER REPLICA replica_1 SYNC TO '127.0.0.1:10001'",
|
|
"REGISTER REPLICA replica_2 ASYNC TO '127.0.0.1:10002'",
|
|
]
|
|
template_cluster: &template_cluster
|
|
cluster:
|
|
replica_1:
|
|
args: ["--bolt-port", "7688", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica1.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10001;"]
|
|
<<: *template_validation_queries
|
|
replica_2:
|
|
args: ["--bolt-port", "7689", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica2.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10002;"]
|
|
<<: *template_validation_queries
|
|
replica_3:
|
|
args: ["--bolt-port", "7690", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica3.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10003;"]
|
|
<<: *template_validation_queries
|
|
main:
|
|
args: ["--bolt-port", "7687", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-main.log"
|
|
setup_queries: [
|
|
"REGISTER REPLICA replica_1 SYNC TO '127.0.0.1:10001'",
|
|
"REGISTER REPLICA replica_2 SYNC TO '127.0.0.1:10002'",
|
|
"REGISTER REPLICA replica_3 ASYNC TO '127.0.0.1:10003'"
|
|
]
|
|
<<: *template_validation_queries
|
|
|
|
workloads:
|
|
- name: "Constraints"
|
|
binary: "tests/e2e/replication/memgraph__e2e__replication__constraints"
|
|
args: []
|
|
<<: *template_cluster
|
|
|
|
- name: "Index replication"
|
|
binary: "tests/e2e/replication/memgraph__e2e__replication__indices"
|
|
args: []
|
|
<<: *template_cluster
|
|
|
|
- name: "Read-write benchmark"
|
|
binary: "tests/e2e/replication/memgraph__e2e__replication__read_write_benchmark"
|
|
args: []
|
|
<<: *template_cluster
|
|
|
|
- name: "Show"
|
|
binary: "tests/e2e/pytest_runner.sh"
|
|
args: ["replication/show.py"]
|
|
cluster:
|
|
replica_1:
|
|
args: ["--bolt-port", "7688", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica1.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10001;"]
|
|
validation_queries: []
|
|
replica_2:
|
|
args: ["--bolt-port", "7689", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica2.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10002;"]
|
|
validation_queries: []
|
|
replica_3:
|
|
args: ["--bolt-port", "7690", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-replica3.log"
|
|
setup_queries: ["SET REPLICATION ROLE TO REPLICA WITH PORT 10003;"]
|
|
validation_queries: []
|
|
main:
|
|
args: ["--bolt-port", "7687", "--log-level=TRACE"]
|
|
log_file: "replication-e2e-main.log"
|
|
setup_queries: [
|
|
"REGISTER REPLICA replica_1 SYNC TO '127.0.0.1:10001'",
|
|
"REGISTER REPLICA replica_2 SYNC TO '127.0.0.1:10002'",
|
|
"REGISTER REPLICA replica_3 ASYNC TO '127.0.0.1:10003'"
|
|
]
|
|
validation_queries: []
|
|
|
|
- name: "Show while creating invalid state"
|
|
binary: "tests/e2e/pytest_runner.sh"
|
|
args: ["replication/show_while_creating_invalid_state.py"]
|
|
|
|
- name: "Delete edge replication"
|
|
binary: "tests/e2e/pytest_runner.sh"
|
|
args: ["replication/edge_delete.py"]
|
|
<<: *template_simple_cluster
|