Questions
9 of 12
1A client gets a dimension-mismatch error when inserting a point. What are the most common root causes?
2A filter query that should return results returns an empty list. What would you check first?
3Why might a collection created without specifying a distance metric or vector size fail immediately, and what does that tell you about how Qdrant treats collection configuration?
4What causes a 'collection not found' error immediately after a collection was reportedly created successfully in a distributed cluster?
5Search results seem semantically wrong even though the embedding model is known to work well. What layers would you check to isolate the problem?
6Recall dropped noticeably after enabling quantization. How would you determine whether the quantization configuration or the rescoring settings are the cause?
7A previously fast query has become slow after months of continuous upserts and deletes, with no configuration changes. What's the most likely explanation?
8How would you distinguish a latency problem caused by disk I/O from one caused by CPU-bound distance computation?
9One node in a three-node Qdrant cluster crashes. What happens to reads and writes for shards that had a replica on that node?
10After a crashed node recovers and rejoins the cluster, how does it catch up on writes it missed?
11What symptoms would indicate a 'split-brain' style problem in a distributed Qdrant cluster, and how does the Raft-based consensus layer prevent it?
12What's your recovery plan if an entire Qdrant cluster is lost (e.g., all nodes' disks fail) and you only have periodic snapshots?
09 / 12

One node in a three-node Qdrant cluster crashes. What happens to reads and writes for shards that had a replica on that node?

Replicated shards fail over to surviving replicas; unreplicated shards become unavailable

What happens depends on the replication factor of each shard. If a shard had a replica on the crashed node and at least one other replica elsewhere, the surviving replica takes over serving reads and writes. For a shard whose primary was on the crashed node, the cluster promotes one of the surviving replicas to primary, and operations continue. For a shard whose replica (not primary) was on the crashed node, the primary continues as before and the cluster simply has one fewer replica until the node recovers. In both cases, there is a brief window during which the cluster detects the failure and, if necessary, elects a new primary, but reads and writes resume without manual intervention. If a shard had only one copy and that copy was on the crashed node, there is no surviving copy, and operations on that shard fail until the node recovers or the shard is restored from a snapshot.

The mechanism behind failover is that the cluster metadata, maintained through Raft, includes the shard-to-node placement and the primary/replica roles. When a node becomes unreachable, the cluster marks it as down, and the placement logic triggers a promotion for any shard whose primary was on that node. The surviving replica is promoted, and it continues to accept writes and serve reads. If the cluster cannot achieve a quorum for metadata operations, no further metadata changes can be committed, but existing shards can continue to serve traffic according to their current placement. This is the distinction between the metadata plane and the data plane: the metadata plane needs quorum, the data plane does not, and a cluster with a downed node can continue serving traffic for any shard that has a surviving replica. The availability of the collection as a whole therefore depends on the replication factor and on which specific shard's data was on the crashed node. With replication_factor=1, a node crash takes down every shard whose primary was on that node; with replication_factor=2, a single node crash leaves at least one copy of every shard; with replication_factor=3, the cluster can tolerate two simultaneous node failures.

  1. 1

    Replicated shard, primary on crashed node: a surviving replica is promoted, reads and writes continue.

  2. 2

    Replicated shard, replica on crashed node: the primary continues, one fewer replica until recovery.

  3. 3

    Unreplicated shard on crashed node: the shard is unavailable until the node recovers or a snapshot is restored.

  4. 4

    Metadata plane: needs quorum for new metadata changes; existing data continues to be served.

  5. 5

    Detection window: there is a brief period during which the failure is detected and failover happens.

  6. 6

    Client impact: reads and writes for replicated shards resume automatically; unreplicated shards return errors.

  7. 7

    Recovery: when the node comes back, it catches up on missed writes via WAL replay or a snapshot transfer.

The trade-off is between replication cost and availability. Higher replication factor means more storage and more network traffic for WAL streaming, but it means the cluster tolerates more failures. The common mistake is to deploy with replication_factor=1 because it is cheaper and then be surprised that a single node failure takes down a large fraction of the collection. The second mistake is to assume that a cluster with one downed node always continues serving all traffic; it does, but only for shards that have a surviving replica, and the shard-to-node placement is not always what the operator expects. The third mistake is to confuse metadata quorum with data availability. A cluster can lose metadata quorum and still serve existing data; conversely, a cluster can have metadata quorum and still have unavailable shards if those shards are unreplicated. Version note: the failover behavior, the promotion logic, and the exact window during which a shard is unavailable after a node crash have changed across Qdrant releases. Some versions have more sophisticated placement and faster failover; others have simpler behavior. If you rely on failover for your SLA, test it by killing a node in a staging cluster and measuring the impact.

javascript

Version-dependent: the cluster info API, the shard placement reporting, and the failover behavior have changed across Qdrant releases. In some versions the info endpoint returns a detailed peer list with shard assignments; in others it is more limited. The time it takes to detect a node failure and promote a replica has also changed. If you are designing for an availability SLA, test the failover behavior on your version rather than relying on a general description.

Difficulty: 7/10
Topics: High Availability, Replication, Node Failure

Scenario Questions

0-2 years experience
  1. 1

    You have a 3-node cluster with replication_factor=1 and one node crashes. Explain what happens to the collections that had shards on that node.

  2. 2

    A teammate says a 3-node cluster always survives one node failure. Explain when that is true and when it is not.

2-5 years experience
  1. 1

    You observe a brief spike in errors after a node crash. Explain why and how you would make the client retry transparently.

  2. 2

    You need to reduce storage cost by lowering replication_factor from 3 to 2. Explain the availability implications and how you would validate them.

5-8 years experience
  1. 1

    Design a Qdrant cluster topology for a workload that must survive the loss of any single node and continue serving all reads and writes. Specify the node count, replication factor, and placement.

  2. 2

    You must perform a rolling restart of a 5-node cluster without any downtime. Describe the procedure and how you would verify that no shards became unavailable during the restart.

8+ years experience
  1. 1

    Derive the availability of a collection as a function of replication factor, node count, and per-node failure rate. What replication factor do you need to meet a 99.9% availability target?

  2. 2

    You are designing a multi-region Qdrant deployment with a 99.99% availability target. Describe the topology, the replication strategy, and the failure modes that could still cause an outage.

Follow-up Questions

  • How would you test the failover behavior of a Qdrant cluster in a staging environment without risking production data?
  • What happens to in-flight requests when a primary fails over, and how would you make the client resilient to the brief window of errors?