memgraph/tests/unit
florijan 95f1b6fe56 Fix remote plan invalidation
Summary:
Ensures that query plans are invalidated on the remote only when it's
guaranteed they will never be used on the master. This is done by
invalidating remote caches in the `CachedPlan` destructor.

There are two unplesant side-effects. First, an RPC call is made in an
object destructor. This is somewhat ugly, but not that different then
making an RPC call that must succeed in any other function. Note that
this does NOT slow down any query execution because the relevant
destructor is called by the skiplist garbage collector. The second ugly
side-effect is that in the unit test now we need to sleep to ensure the
skiplist GC destructs a cached plan before checking that it's
invalidated on the remote worker.

We might want to redesign this at some point.

Reviewers: teon.banek

Reviewed By: teon.banek

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D1302
2018-03-16 11:18:16 +01:00
..
bolt_buffer.cpp Use GLogger instead of broken memgraph Logger. 2017-06-21 15:33:24 +02:00
bolt_chunked_decoder_buffer.cpp Fixed bolt decoder chunked buffer implementation. 2017-09-06 13:19:42 +02:00
bolt_chunked_encoder_buffer.cpp Fixed bolt chunked encoder buffer for big data. 2017-09-06 15:36:24 +02:00
bolt_common.hpp Refactor network stack 2018-02-22 16:29:17 +01:00
bolt_decoder.cpp First version of bolt cpp client. 2017-08-24 17:44:44 +02:00
bolt_encoder.cpp Refactor GraphDb 2018-01-12 16:47:24 +01:00
bolt_result_stream.cpp Use GLogger instead of broken memgraph Logger. 2017-06-21 15:33:24 +02:00
bolt_session.cpp Refactor network stack 2018-02-22 16:29:17 +01:00
bolt_testdata.hpp Removed large bolt encoder test to reduce runtime. 2017-05-03 14:50:02 +02:00
CMakeLists.txt Integrate code coverage with Apollo 2018-01-15 12:20:11 +01:00
concurrent_id_mapper_distributed.cpp Use the same ClientPools in distributed 2018-03-01 17:14:59 +01:00
concurrent_id_mapper_single_node.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
concurrent_map_access.cpp Const map/set iteration. 2017-10-12 16:35:39 +02:00
concurrent_map.cpp Remove traces of custom assert 2017-10-13 09:34:13 +02:00
concurrent_set.cpp Remove traces of custom assert 2017-10-13 09:34:13 +02:00
counters.cpp Use the same ClientPools in distributed 2018-03-01 17:14:59 +01:00
cypher_main_visitor.cpp Add SINGLE function to openCypher 2018-02-13 17:30:44 +01:00
database_key_index.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
database_label_property_index.cpp Support distributed (label, property) indexes 2018-01-25 18:08:04 +01:00
database_master.cpp Add database master test 2018-01-19 14:52:05 +01:00
database_transaction_timeout.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
datastructure_union_find.cpp Add parallel customers/Otto test 2017-11-23 09:20:53 +01:00
deferred_deleter.cpp Make gc more aggressive and optimise is_not_visible function 2017-10-06 10:07:55 +02:00
demangle.cpp Add client side RPC stats 2018-02-22 12:34:48 +01:00
distributed_common.hpp Use custom future that waits on destruct 2018-03-09 10:16:17 +01:00
distributed_coordination.cpp Fix flakyness in tests/unit/distributed_coord 2018-03-12 12:30:59 +01:00
distributed_data_exchange.cpp Implement sync operator 2018-02-14 13:03:18 +01:00
distributed_graph_db.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
distributed_interpretation.cpp Fix remote plan invalidation 2018-03-16 11:18:16 +01:00
distributed_query_plan.cpp Use custom future that waits on destruct 2018-03-09 10:16:17 +01:00
distributed_serialization.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
distributed_updates.cpp Fix updating a newly created edge 2018-03-14 12:49:24 +01:00
durability.cpp Refactor database::StateDelta 2018-02-02 11:44:03 +01:00
dynamic_bitset.cpp Newer bits on head chunk in DynamicBitset 2017-09-20 16:56:58 +02:00
exceptions.cpp Merge utils/exceptions into single file 2017-04-20 16:53:21 +02:00
executor.cpp Remove executor not run option 2017-12-18 14:36:15 +01:00
gid.cpp Change gid bit size 2017-12-28 11:04:52 +01:00
graph_db_accessor_index_api.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
graph_db_accessor.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
graph_db.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
interpreter.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
metrics.cpp Add some metric types and basic RPC server stats 2018-02-16 08:33:15 +01:00
mvcc_find_update_common.hpp Extract tx::SingleNodeEngine from tx::MasterEngine 2018-01-11 15:44:42 +01:00
mvcc_find.cpp GC bugfixes, MVCC and transaction refactoring 2017-06-12 10:46:12 +02:00
mvcc_gc_common.hpp Extract tx::SingleNodeEngine from tx::MasterEngine 2018-01-11 15:44:42 +01:00
mvcc_gc.cpp Extract tx::SingleNodeEngine from tx::MasterEngine 2018-01-11 15:44:42 +01:00
mvcc_one_transaction.cpp Fix mvcc tests 2017-10-19 12:58:23 +02:00
mvcc_parallel_update.cpp Fix mvcc tests 2017-10-19 12:58:23 +02:00
mvcc.cpp Extract tx::SingleNodeEngine from tx::MasterEngine 2018-01-11 15:44:42 +01:00
network_endpoint.cpp Rename NetworkEndpoint 2018-01-15 15:47:37 +01:00
network_timeouts.cpp Fix Bolt timeout check 2018-02-26 18:18:01 +01:00
property_value_store.cpp Migrate db::types to storage:: 2018-01-17 10:35:12 +01:00
query_common.hpp Add SINGLE function to openCypher 2018-02-13 17:30:44 +01:00
query_cost_estimator.cpp Add ExpandWeightedShortestPathCursor 2018-02-14 09:32:41 +01:00
query_expression_evaluator.cpp Add SINGLE function to openCypher 2018-02-13 17:30:44 +01:00
query_plan_accumulate_aggregate.cpp Use RemoteCreateVertex in CreateNode operator 2018-02-21 12:17:43 +01:00
query_plan_bag_semantics.cpp Use RemoteCreateVertex in CreateNode operator 2018-02-21 12:17:43 +01:00
query_plan_common.hpp Add distributed execution RPC 2018-01-25 14:50:28 +01:00
query_plan_create_set_remove_delete.cpp Use RemoteCreateVertex in CreateNode operator 2018-02-21 12:17:43 +01:00
query_plan_edge_cases.cpp Invalidate distributed plan caches 2018-03-13 14:59:51 +01:00
query_plan_match_filter_return.cpp Check values can be used for range indexed ScanAll 2018-03-13 10:23:30 +01:00
query_planner.cpp Allow replacing Accumulate with Synchronize in all cases 2018-03-05 15:35:36 +01:00
query_semantic.cpp Add SINGLE function to openCypher 2018-02-13 17:30:44 +01:00
query_variable_start_planner.cpp Add wShortest expansion to openCypher 2018-02-09 11:02:41 +01:00
queue.cpp Add first version of message passing and rpc 2017-12-05 14:51:18 +01:00
raft_storage.cpp Cleanup utils::File API 2018-01-16 15:38:12 +01:00
raft.cpp RPC refactor 2018-01-24 15:27:40 +01:00
record_edge_vertex_accessor.cpp Refactor state deltas call 2018-02-26 15:44:50 +01:00
ring_buffer.cpp RingBuffer - buffer on heap instead of stack 2017-11-02 12:07:23 +01:00
rpc_worker_clients.cpp Check all RPC call results 2018-03-13 15:16:50 +01:00
rpc.cpp Check all RPC call results 2018-03-13 15:16:50 +01:00
rwlock.cpp Add deletion, more stats to card fraud and RWLock 2018-03-14 16:23:23 +01:00
scheduler.cpp Add thread names 2018-02-23 16:04:49 +01:00
serialization_optional.cpp Implement vertex/edge serialization 2018-01-10 13:32:18 +01:00
signal_handler.cpp Prevent double termination signals causing crashes 2017-11-09 10:41:16 +01:00
skiplist_access.cpp Const map/set iteration. 2017-10-12 16:35:39 +02:00
skiplist_gc.cpp Remove executor not run option 2017-12-18 14:36:15 +01:00
skiplist_position_and_count.cpp Replace debug_assert, permanent_assert with DCHECK/CHECK 2017-10-11 14:43:32 +02:00
skiplist_reverse_iteration.cpp Logger in this test somehow breaks code coverage. Argh... 2017-04-07 09:44:12 +02:00
skiplist_suffix.cpp Refactor GraphDb 2018-01-12 16:47:24 +01:00
state_delta.cpp DetachRemoveVertex remote 2018-03-02 10:51:26 +01:00
static_bitset.cpp Fix tests that expect debug_assert to fail 2017-08-07 16:38:15 +02:00
storage_address.cpp Support snapshot creation and recovery in distributed 2018-01-29 19:16:13 +01:00
stripped.cpp Fix semicolon in column name 2017-12-14 09:44:21 +01:00
timestamp.cpp Add initial version of statsd 2018-02-02 17:02:37 +01:00
transaction_engine_distributed.cpp Use the same ClientPools in distributed 2018-03-01 17:14:59 +01:00
transaction_engine_single_node.cpp Refactor distributed transactional cache GC 2018-02-27 10:47:58 +01:00
typed_value.cpp Refactor GraphDb 2018-01-12 16:47:24 +01:00
utils_network.cpp Rename NetworkEndpoint 2018-01-15 15:47:37 +01:00
utils_on_scope_exit.cpp utils::auto_scope refactor 2017-08-11 09:43:10 +02:00
utils_string.cpp Fix durability test flakyness 2017-12-04 13:46:56 +01:00
watchdog.cpp Add Watchdog utility 2017-11-09 11:23:11 +01:00