Hello, I set up my cluster (5 nodes, 6.1.2) with a K-safety of 2. All projections are created with k-safety 2, the design has been marked as k-safe 2, all looked good. I then lost a node. With a k-safety of 2, I did not mid so much, trusting that it should have minimal impact. It then appeared that the server is fully dead, and thus wanted to fully remove it from the cluster, following the documentation, which says to first lower the k-safety. Sadly, trying to mark the design as ksafe 1 fails because some projections, whereas marked as ksafe 2 are actually only ksafe 1 (see [1]). Probably related to this, when running on 2 nodes only, i do see this errors for some queries: ERROR: Insufficient projections to answer query Detail: Path segment called for on node v_spil_dwh_node0005 can not be computed I recently rebalanced the cluster to make sure that all projections were up to date. So my questions are: - how is this even possible? - Is there something to be done to avoid this? This is now a huge production issue. Extra information: [1]: failing to lower a ksafe 2 design to 1
spil_dwh=> SELECT MARK_DESIGN_KSAFE(1); -[ RECORD 1 ]-----+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- MARK_DESIGN_KSAFE | Current design does not meet the requirements for K = 1. Current design is valid for K = 0. Projection dsl.geoip_name has insufficient buddy projections; it has 0 buddies Projection dsl.vw_gameplays_reportdate has insufficient buddy projections; it has 0 buddies Projection dsl.vw_gameplays_username has insufficient buddy projections; it has 0 buddies
Offending projection:
spil_dwh=> select export_objects('', ' dsl.geoip_name'); -[ RECORD 1 ]--+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- export_objects | CREATE PROJECTION dsl.geoip_name /*+createtype(D)*/ ( id ENCODING DELTARANGE_COMP, begin_ip, end_ip, begin_num ENCODING DELTARANGE_COMP, end_num ENCODING DELTARANGE_COMP, country ENCODING RLE, name ) AS SELECT geoip.id, geoip.begin_ip, geoip.end_ip, geoip.begin_num, geoip.end_num, geoip.country, geoip.name FROM dsl.geoip ORDER BY geoip.name SEGMENTED BY hash(geoip.name) ALL NODES OFFSET 2; SELECT MARK_DESIGN_KSAFE(2);