To provide more flexibility in managing snapshots, {prodname} includes a supplementary ad hoc snapshot mechanism, known as a _blocking snapshot_.
Blocking snapshots rely on the {prodname} mechanism for {link-prefix}:{link-signalling}#sending-signals-to-a-debezium-connector[sending signals to a {prodname} connector].

A blocking snapshot behaves just like an _initial snapshot_, except that you can trigger it at run time.

You might want to run a blocking snapshot rather than use the standard initial snapshot process in the following situations:

* You add a new {data-collection} and you want to complete the snapshot while the connector is running.
* You add a large {data-collection}, and you want the snapshot to complete in less time than is possible with an incremental snapshot.

.Blocking snapshot process
When you run a blocking snapshot, {prodname} stops streaming, and then initiates a snapshot of the specified {data-collection}, following the same process that it uses during an initial snapshot.
After the snapshot completes, the streaming is resumed.

.Configure snapshot

You can set the following properties in the `data` component of a signal:

 * data-collections: to specify which {data-collection}s must be snapshot.
* data-collections: Specifies the {data-collection}s that you want the snapshot to include. +
This property accepts a comma-separated list of regular expressions that match fully-qualified {data-collection} names.
The behavior of the property is similar to the behavior of the `table.include.list` property, which specifies the tables to capture in a blocking snapshot.
 * additional-conditions: You can specify different filters for different {data-collection}. +
 ** The `data-collection` property is the fully-qualified name of the {data-collection} for which the filter will be applied, and can be case-sensitive or case-insensitive depending on the database.
 ** The `filter` property will have the same value used in the  `snapshot.select.statement.overrides`, the fully-qualified name of the {data-collection} that should match by case.

For example:
[source,json]
----
  {"type": "blocking", "data-collections": ["schema1.table1", "schema1.table2"], "additional-conditions": [{"data-collection": "schema1.table1", "filter": "SELECT * FROM [schema1].[table1] WHERE column1 = 0 ORDER BY column2 DESC"}, {"data-collection": "schema1.table2", "filter": "SELECT * FROM [schema1].[table2] WHERE column2 > 0"}]}
----

.Possible duplicates
A delay might exist between the time that you send the signal to trigger the snapshot, and the time when streaming stops and the snapshot starts.
As a result of this delay, after the snapshot completes, the connector might emit some event records that duplicate records captured by the snapshot.
