<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Reference on GCP Connectors for Apache Flink</title><link>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/</link><description>Recent content in Reference on GCP Connectors for Apache Flink</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/index.xml" rel="self" type="application/rss+xml"/><item><title>BigQuery</title><link>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/bigquery/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/bigquery/</guid><description>&lt;h1 id="bigquery-options"&gt;BigQuery options&lt;a class="anchor" href="#bigquery-options"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every option the BigQuery sink and source take. What each one is &lt;em&gt;for&lt;/em&gt; is on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/bigquery/"&gt;BigQuery connector&lt;/a&gt; page, linked from each
section; the three forms of the Default column are explained
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/#what-a-default-means"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="bigquerysinkbuilder"&gt;&lt;code&gt;BigQuerySink.builder()&lt;/code&gt;&lt;a class="anchor" href="#bigquerysinkbuilder"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Option&lt;/th&gt;
					&lt;th&gt;Default&lt;/th&gt;
					&lt;th&gt;What it does&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;writeMethod&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;STORAGE_API_AT_LEAST_ONCE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Which write path the sink dispatches to at graph construction&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;table&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;required&lt;/strong&gt;, unless &lt;code&gt;destinationResolver&lt;/code&gt; is set&lt;/td&gt;
					&lt;td&gt;Writes every record to one fixed table&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;destinationResolver&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;Resolves the table per record for every write method&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;serializer&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;required&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Converts each record into the protobuf row the Storage Write API accepts, or into &lt;code&gt;null&lt;/code&gt; to skip it&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;createDisposition&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;CREATE_IF_NEEDED&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Whether a missing destination table is created or fails the job. It does not authorize or deny reconciliation of an existing CDC table. &lt;code&gt;CREATE_IF_NEEDED&lt;/code&gt; also lets &lt;code&gt;STORAGE_API_EXACTLY_ONCE&lt;/code&gt; wait out the post-creation propagation window at commit time, so &lt;code&gt;CREATE_NEVER&lt;/code&gt; opts out of both on that write path&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tableCreateOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;plain tables&lt;/td&gt;
					&lt;td&gt;&lt;a href="#tablecreateoptions"&gt;Creation settings&lt;/a&gt; for every table the sink creates&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;tableCreateOptionsProvider&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The same, resolved per destination. Overrides &lt;code&gt;tableCreateOptions&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;schemaUpdateOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;updates disabled&lt;/td&gt;
					&lt;td&gt;&lt;a href="#schemaupdateoptions"&gt;What the sink may change&lt;/a&gt; about a destination table&amp;rsquo;s schema&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;failureHandler&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;FailureHandler.failJob()&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;What happens to an explicit record-specific routing failure or a row that terminally fails — fail, drop, or dead-letter. The queue behind &lt;code&gt;sendToDeadLetterQueue(...)&lt;/code&gt; has &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/pubsub/#pubsubdeadletterqueuebuilder"&gt;options of its own&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;location&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The BigQuery location shared by the destination tables. Setting it avoids a per-table metadata lookup when a write connection is opened and locates CDC maximum-staleness jobs; under &lt;code&gt;FILE_LOADS&lt;/code&gt; it is the location every load job runs in and is recovered under, derived from each job&amp;rsquo;s destination dataset when unset — which is what a sink routing to datasets in several regions should rely on&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;serviceAccountKeyFile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;em&gt;unset → ADC&lt;/em&gt;&lt;/td&gt;
					&lt;td&gt;Uses the service account in this JSON key file for every BigQuery client and for GCS staging under &lt;code&gt;FILE_LOADS&lt;/code&gt;. The file is loaded at runtime and must exist on each TaskManager; rejected with either emulator endpoint&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;additionalFields&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;no additional fields&lt;/td&gt;
					&lt;td&gt;Appends ordered &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/bigquery/#additional-physical-fields"&gt;additional physical fields&lt;/a&gt; after serialization for every write method&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cdcOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;CDC disabled&lt;/td&gt;
					&lt;td&gt;Adds &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/bigquery/#change-data-capture"&gt;CDC metadata&lt;/a&gt; to non-skipped rows. Requires &lt;code&gt;STORAGE_API_AT_LEAST_ONCE&lt;/code&gt; and a BigQuery primary key&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cdcTableOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;primary key undeclared; maximum staleness unmanaged&lt;/td&gt;
					&lt;td&gt;Applies one &lt;a href="#cdctableoptions"&gt;CDC table contract&lt;/a&gt; to every destination. Required with a primary key when a missing table must be created or the reconciliation policy is &lt;code&gt;RECONCILE&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cdcTableOptionsProvider&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The same contract, resolved per destination. Overrides &lt;code&gt;cdcTableOptions&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;cdcTableReconciliationPolicy&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;VERIFY_ONLY&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Verifies without starting adoption or drift repair, or opts into convergence through &lt;code&gt;RECONCILE&lt;/code&gt;. Either policy resumes a matching pending attempt. Independent of &lt;code&gt;createDisposition&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;defaultStreamOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="#defaultstreamoptions"&gt;defaults&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Tuning for &lt;code&gt;STORAGE_API_AT_LEAST_ONCE&lt;/code&gt;; rejected for the other two&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;bufferedStreamOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;required&lt;/strong&gt; for &lt;code&gt;STORAGE_API_EXACTLY_ONCE&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="#bufferedstreamoptions"&gt;Tuning&lt;/a&gt; for that method; rejected for the other two&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;fileLoadsOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;required&lt;/strong&gt; for &lt;code&gt;FILE_LOADS&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="#fileloadsoptions"&gt;Settings&lt;/a&gt; for that method; rejected for the other two&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;emulatorEndpoint&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;Sends the Storage Write API traffic to a BigQuery emulator at &lt;code&gt;host:port&lt;/code&gt;, over plaintext and without credentials. Rejected under &lt;code&gt;FILE_LOADS&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;emulatorRestEndpoint&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;The same for table creation, schema updates and the CDC table contract, which go over REST — a transport BigQuery serves on a different port, so the two endpoints are separate&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The two emulator endpoints are for testing against a local emulator and nothing else: both use
plaintext and no credentials, and both are rejected under &lt;code&gt;FILE_LOADS&lt;/code&gt;, which stages files to Cloud
Storage that no emulator here stands in for. A malformed &lt;code&gt;host:port&lt;/code&gt; fails in the setter, on the
client, rather than as a connection error after the job is deployed.&lt;/p&gt;</description></item><item><title>Cloud Pub/Sub</title><link>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/pubsub/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/pubsub/</guid><description>&lt;h1 id="cloud-pubsub-options"&gt;Cloud Pub/Sub options&lt;a class="anchor" href="#cloud-pubsub-options"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every option the Pub/Sub sink and source take, and the ones the shared
&lt;a href="#pubsubdeadletterqueuebuilder"&gt;dead-letter queue&lt;/a&gt; takes. What each one is &lt;em&gt;for&lt;/em&gt; is on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/pubsub/"&gt;Cloud Pub/Sub connector&lt;/a&gt; page, linked from
each section; the three forms of the Default column are explained
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/#what-a-default-means"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;WITH&lt;/code&gt; options of the &lt;code&gt;pubsub&lt;/code&gt; table connector are a separate surface, documented on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/table/pubsub/"&gt;Pub/Sub SQL connector&lt;/a&gt; page.&lt;/p&gt;
&lt;h2 id="pubsubsinkbuilder"&gt;&lt;code&gt;PubSubSink.builder()&lt;/code&gt;&lt;a class="anchor" href="#pubsubsinkbuilder"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Option&lt;/th&gt;
					&lt;th&gt;Default&lt;/th&gt;
					&lt;th&gt;What it does&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;topic&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;required&lt;/strong&gt;, unless &lt;code&gt;destinationResolver&lt;/code&gt; is set&lt;/td&gt;
					&lt;td&gt;Publishes every record to one fixed topic&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;destinationResolver&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;Resolves the topic per record&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;serializer&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;strong&gt;required&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Converts each record into a &lt;code&gt;PubsubMessage&lt;/code&gt;, or into &lt;code&gt;null&lt;/code&gt; to skip it. &lt;code&gt;payload(...)&lt;/code&gt; wraps a payload-only schema; &lt;code&gt;withAttributes(...)&lt;/code&gt; and &lt;code&gt;withOrderingKey(...)&lt;/code&gt; layer onto any of them&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;createDisposition&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;CREATE_IF_NEEDED&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Whether a missing topic is created or fails the job&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;topicCreateOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;Pub/Sub&amp;rsquo;s own defaults&lt;/td&gt;
					&lt;td&gt;&lt;a href="#topiccreateoptions"&gt;Settings&lt;/a&gt; for topics the sink creates. Rejected with &lt;code&gt;CREATE_NEVER&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;publisherOptions&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;a href="#pubsubpublisheroptions"&gt;defaults&lt;/a&gt;&lt;/td&gt;
					&lt;td&gt;Publisher and writer tuning&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;failedMessageHandler&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;FailureHandler.failJob()&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;What happens to a message that terminally fails — fail, drop, or dead-letter. Under &lt;code&gt;enableMessageOrdering(true)&lt;/code&gt;, dropping a keyed message leaves a gap in that key&amp;rsquo;s stream&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;serviceAccountKeyFile&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;&lt;em&gt;unset ⇒ application-default credentials&lt;/em&gt;&lt;/td&gt;
					&lt;td&gt;Reads a service-account JSON key on each TaskManager when the writer starts. Every eligible TaskManager must see the same path. Rejected beside &lt;code&gt;emulatorEndpoint&lt;/code&gt;; see the &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/pubsub/#credential-file-deployment"&gt;deployment note&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;code&gt;emulatorEndpoint&lt;/code&gt;&lt;/td&gt;
					&lt;td&gt;—&lt;/td&gt;
					&lt;td&gt;Points the sink at an emulator over a plaintext channel with &lt;strong&gt;no credentials&lt;/strong&gt;. Never production. Given as &lt;code&gt;host:port&lt;/code&gt;, and rejected at the setter if it is not&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="pubsubpublisheroptions"&gt;&lt;code&gt;PubSubPublisherOptions&lt;/code&gt;&lt;a class="anchor" href="#pubsubpublisheroptions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Set through &lt;code&gt;publisherOptions(...)&lt;/code&gt;. The batching and retry knobs are handed to the SDK publisher
and left unset by default, so &lt;code&gt;defaults()&lt;/code&gt; is equivalent to passing no options at all; the in-flight
caps and the recovery budget are the connector&amp;rsquo;s own. See
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/pubsub/#publisher-options"&gt;Publisher options&lt;/a&gt; for why
the SDK&amp;rsquo;s flow controller is deliberately not exposed, and
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/pubsub/#delivery-guarantees-and-state"&gt;Backpressure&lt;/a&gt;
for how the caps are sized.&lt;/p&gt;</description></item><item><title>Cloud Tasks</title><link>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/cloudtasks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/cloudtasks/</guid><description>&lt;h1 id="cloud-tasks-options"&gt;Cloud Tasks options&lt;a class="anchor" href="#cloud-tasks-options"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every option the Cloud Tasks sink and App Engine target builder take. What each one is &lt;em&gt;for&lt;/em&gt; is on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/cloudtasks/"&gt;Cloud Tasks connector&lt;/a&gt; page; the three
forms of the Default column are explained
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/#what-a-default-means"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the shortest reference of the three, and deliberately so: &lt;strong&gt;there are no rate knobs here.&lt;/strong&gt;
&lt;code&gt;maxDispatchesPerSecond&lt;/code&gt;, &lt;code&gt;maxConcurrentDispatches&lt;/code&gt; and the retry policy are &lt;em&gt;queue&lt;/em&gt; configuration,
applied by whoever creates the queue — the sink writes tasks and the queue decides how fast they
execute. That inversion is the connector&amp;rsquo;s whole reason for existing, and it is set out under
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/cloudtasks/#what-this-connector-is-for"&gt;What this connector is for&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Bigtable</title><link>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/bigtable/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/bigtable/</guid><description>&lt;h1 id="bigtable-options"&gt;Bigtable options&lt;a class="anchor" href="#bigtable-options"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every option the Bigtable sink and source take. What each one is &lt;em&gt;for&lt;/em&gt; is on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/bigtable/"&gt;Bigtable connector&lt;/a&gt; page; the three forms of
the Default column are explained &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/#what-a-default-means"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;WITH&lt;/code&gt; options of the &lt;code&gt;bigtable&lt;/code&gt; table connector are a separate surface, documented on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/table/bigtable/"&gt;Bigtable SQL connector&lt;/a&gt; page.&lt;/p&gt;
&lt;p&gt;One thing this reference does not list, because it is not an option here. &lt;strong&gt;There are no retry
knobs&lt;/strong&gt;: the client retries &lt;code&gt;MutateRows&lt;/code&gt; per entry on a schedule of its own, so the sink owns no
retry loop — the opposite of the &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/cloudtasks/"&gt;Cloud Tasks&lt;/a&gt; sink, and
the reasoning is under
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/bigtable/#retries-belong-to-the-client"&gt;Retries&lt;/a&gt;. The
&lt;code&gt;recovery*&lt;/code&gt; knobs below are not an exception: they budget the sink-owned
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/bigtable/#table-auto-creation"&gt;table auto-creation&lt;/a&gt;
repair, not the client&amp;rsquo;s mutation retries. The source owns no retry loop either: the client
resumes a broken &lt;code&gt;ReadRows&lt;/code&gt; stream from the last key it saw.&lt;/p&gt;</description></item><item><title>Spanner</title><link>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/spanner/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/spanner/</guid><description>&lt;h1 id="spanner-options"&gt;Spanner options&lt;a class="anchor" href="#spanner-options"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Every option the Spanner sink and source take. What each one is &lt;em&gt;for&lt;/em&gt; is on the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/spanner/"&gt;Spanner connector&lt;/a&gt; page; the three forms of
the Default column are explained &lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/#what-a-default-means"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This sink&amp;rsquo;s recovery knobs budget the write retry loop itself, unlike the
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/reference/bigtable/"&gt;Bigtable&lt;/a&gt; recovery knobs, which budget only table
auto-creation repair.
They are not decoration: the Spanner client library does not retry the batch write RPC at all, so
the sink owns the whole retry loop.
See
&lt;a href="https://flink-gcp.github.io/flink-connector-gcp/1.0/docs/connectors/datastream/spanner/#retries-belong-to-the-sink"&gt;Retries&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>