diff --git a/.bumpversion.cfg b/.bumpversion.cfg index cd46d2b8de6a..b7cb1e59574a 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.50.39 +current_version = 0.50.40 commit = False tag = False parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-[a-z]+)? diff --git a/airbyte-cdk/java/airbyte-cdk/README.md b/airbyte-cdk/java/airbyte-cdk/README.md index 0dde65199110..fe01ebceef41 100644 --- a/airbyte-cdk/java/airbyte-cdk/README.md +++ b/airbyte-cdk/java/airbyte-cdk/README.md @@ -163,7 +163,8 @@ MavenLocal debugging steps: ### Java CDK | Version | Date | Pull Request | Subject | -|:--------|:-----------|:-----------------------------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------| +| :------ | :--------- | :--------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0.10.1 | 2023-12-21 | [\#33723](https://github.com/airbytehq/airbyte/pull/33723) | Make memory-manager log message less scary | | 0.10.0 | 2023-12-20 | [\#33704](https://github.com/airbytehq/airbyte/pull/33704) | JdbcDestinationHandler now properly implements `getInitialRawTableState`; reenable SqlGenerator test | | 0.9.0 | 2023-12-18 | [\#33124](https://github.com/airbytehq/airbyte/pull/33124) | Make Schema Creation Separate from Table Creation, exclude the T&D module from the CDK | | 0.8.0 | 2023-12-18 | [\#33506](https://github.com/airbytehq/airbyte/pull/33506) | Improve async destination shutdown logic; more JDBC async migration work; improve DAT test schema handling | diff --git a/airbyte-cdk/java/airbyte-cdk/core/src/main/java/io/airbyte/cdk/integrations/destination_async/GlobalMemoryManager.java b/airbyte-cdk/java/airbyte-cdk/core/src/main/java/io/airbyte/cdk/integrations/destination_async/GlobalMemoryManager.java index ee83e8c76fb3..ca8aea8fdbcb 100644 --- a/airbyte-cdk/java/airbyte-cdk/core/src/main/java/io/airbyte/cdk/integrations/destination_async/GlobalMemoryManager.java +++ b/airbyte-cdk/java/airbyte-cdk/core/src/main/java/io/airbyte/cdk/integrations/destination_async/GlobalMemoryManager.java @@ -88,8 +88,9 @@ public void free(final long bytes) { log.info("Freeing {} bytes..", bytes); currentMemoryBytes.addAndGet(-bytes); - if (currentMemoryBytes.get() < 0) { - log.warn("Freed more memory than allocated. This should never happen. Please report this bug."); + final long currentMemory = currentMemoryBytes.get(); + if (currentMemory < 0) { + log.info("Freed more memory than allocated ({} of {})", bytes, currentMemory + bytes); } } diff --git a/airbyte-cdk/java/airbyte-cdk/core/src/main/resources/version.properties b/airbyte-cdk/java/airbyte-cdk/core/src/main/resources/version.properties index 825e6cf24998..c1bf17f0779b 100644 --- a/airbyte-cdk/java/airbyte-cdk/core/src/main/resources/version.properties +++ b/airbyte-cdk/java/airbyte-cdk/core/src/main/resources/version.properties @@ -1 +1 @@ -version=0.10.0 +version=0.10.1 diff --git a/airbyte-ci/connectors/metadata_service/lib/metadata_service/validators/metadata_validator.py b/airbyte-ci/connectors/metadata_service/lib/metadata_service/validators/metadata_validator.py index 205b0ef243ad..2e5e38f50e9c 100644 --- a/airbyte-ci/connectors/metadata_service/lib/metadata_service/validators/metadata_validator.py +++ b/airbyte-ci/connectors/metadata_service/lib/metadata_service/validators/metadata_validator.py @@ -26,15 +26,8 @@ class ValidatorOptions: # TODO: Remove these when each of these connectors ship any new version ALREADY_ON_MAJOR_VERSION_EXCEPTIONS = [ ("airbyte/source-prestashop", "1.0.0"), - ("airbyte/source-onesignal", "1.0.0"), ("airbyte/source-yandex-metrica", "1.0.0"), - ("airbyte/destination-meilisearch", "1.0.0"), ("airbyte/destination-csv", "1.0.0"), - ("airbyte/source-metabase", "1.0.0"), - ("airbyte/source-typeform", "1.0.0"), - ("airbyte/source-recharge", "1.0.0"), - ("airbyte/source-pipedrive", "1.0.0"), - ("airbyte/source-paypal-transaction", "2.0.0"), ] diff --git a/airbyte-integrations/connectors/destination-bigquery/build.gradle b/airbyte-integrations/connectors/destination-bigquery/build.gradle index 96e940716dec..6a1801ff5020 100644 --- a/airbyte-integrations/connectors/destination-bigquery/build.gradle +++ b/airbyte-integrations/connectors/destination-bigquery/build.gradle @@ -4,7 +4,7 @@ plugins { } airbyteJavaConnector { - cdkVersionRequired = '0.10.0' + cdkVersionRequired = '0.10.1' features = ['db-destinations', 's3-destinations'] useLocalCdk = false } diff --git a/airbyte-integrations/connectors/destination-redshift/build.gradle b/airbyte-integrations/connectors/destination-redshift/build.gradle index 57544314335a..a090d335190e 100644 --- a/airbyte-integrations/connectors/destination-redshift/build.gradle +++ b/airbyte-integrations/connectors/destination-redshift/build.gradle @@ -4,7 +4,7 @@ plugins { } airbyteJavaConnector { - cdkVersionRequired = '0.10.0' + cdkVersionRequired = '0.10.1' features = ['db-destinations', 's3-destinations'] useLocalCdk = false } diff --git a/airbyte-integrations/connectors/destination-snowflake/build.gradle b/airbyte-integrations/connectors/destination-snowflake/build.gradle index 326a736c16a7..273fa2a127f9 100644 --- a/airbyte-integrations/connectors/destination-snowflake/build.gradle +++ b/airbyte-integrations/connectors/destination-snowflake/build.gradle @@ -4,7 +4,7 @@ plugins { } airbyteJavaConnector { - cdkVersionRequired = '0.10.0' + cdkVersionRequired = '0.10.1' features = ['db-destinations', 's3-destinations'] useLocalCdk = false } diff --git a/airbyte-integrations/connectors/source-microsoft-onedrive/metadata.yaml b/airbyte-integrations/connectors/source-microsoft-onedrive/metadata.yaml index 45d2decd09df..c2babada0d1e 100644 --- a/airbyte-integrations/connectors/source-microsoft-onedrive/metadata.yaml +++ b/airbyte-integrations/connectors/source-microsoft-onedrive/metadata.yaml @@ -7,7 +7,7 @@ data: oss: enabled: true cloud: - enabled: true + enabled: false # We need to either implement OAuth for cloud or remove OAuth from the config for cloud connectorBuildOptions: baseImage: docker.io/airbyte/python-connector-base:1.2.0@sha256:c22a9d97464b69d6ef01898edf3f8612dc11614f05a84984451dde195f337db9 connectorSubtype: api diff --git a/docs/cloud/managing-airbyte-cloud/understand-airbyte-cloud-limits.md b/docs/cloud/managing-airbyte-cloud/understand-airbyte-cloud-limits.md index 75b7e5316d61..f9e4b5467a84 100644 --- a/docs/cloud/managing-airbyte-cloud/understand-airbyte-cloud-limits.md +++ b/docs/cloud/managing-airbyte-cloud/understand-airbyte-cloud-limits.md @@ -12,16 +12,5 @@ Understanding the following limitations will help you more effectively manage Ai * Max number of streams that can be returned by a source in a discover call: 1K * Max number of streams that can be configured to sync in a single connection: 1K * Size of a single record: 20MB - * A flag can be set in order to log the PKs of the record that are skipped because of a size limit. In order to do that, -the following entry need to be added to the file `flag.yml`: -```yaml - - name: platform.print-long-record-pks - serve: true -``` - * It is possible to not fail the syncs and instead skip the records by adding the following entry to the file `flag.yml` -```yaml - - name: platform.fail-sync-if-too-big - serve: false -``` *Limits on workspaces, sources, and destinations do not apply to customers of [Powered by Airbyte](https://airbyte.com/solutions/powered-by-airbyte). To learn more [contact us](https://airbyte.com/talk-to-sales)! diff --git a/docs/operating-airbyte/security.md b/docs/operating-airbyte/security.md index 3f0eb252ad4a..ae224b3ad75a 100644 --- a/docs/operating-airbyte/security.md +++ b/docs/operating-airbyte/security.md @@ -88,14 +88,6 @@ Note that this process is not reversible. Once you have converted to a secret st Most Airbyte Open Source connectors support encryption-in-transit (SSL or HTTPS). We recommend configuring your connectors to use the encryption option whenever available. -### Telemetry - -Airbyte does send anonymized data to our services to improve the product (especially connector reliability and scale). To disable telemetry, modify the .env file and define the following environment variable: - -``` -TRACKING_STRATEGY=logging -``` - ## Securing Airbyte Cloud Airbyte Cloud leverages the security features of leading Cloud providers and sets least-privilege access policies to ensure data security. diff --git a/docs/operator-guides/telemetry.md b/docs/operator-guides/telemetry.md new file mode 100644 index 000000000000..71352d7c8b47 --- /dev/null +++ b/docs/operator-guides/telemetry.md @@ -0,0 +1,30 @@ +--- +products: all +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# Telemetry + +Airbyte collects telemetry data in the UI and the servers to help us understand users and their use-cases better to improve the product. + +Also check our [privacy policy](https://airbyte.com/privacy-policy) for more details. + + + + To disable telemetry for your instance, modify the `.env` file and define the following environment variable: + + ``` + TRACKING_STRATEGY=logging + ``` + + + When visiting the webapp or our homepage the first time, you'll be asked for your consent to + telemetry collection depending on the legal requirements of your location. + + To change this later go to **Settings** > **User Settings** > **Cookie Preferences** or **Cookie Preferences** in the footer of our [homepage](https://airbyte.com). + + Server side telemetry collection can't be changed using Airbyte Cloud. + + \ No newline at end of file diff --git a/docs/operator-guides/upgrading-airbyte.md b/docs/operator-guides/upgrading-airbyte.md index 761e3692044d..4b87ad39554b 100644 --- a/docs/operator-guides/upgrading-airbyte.md +++ b/docs/operator-guides/upgrading-airbyte.md @@ -128,7 +128,7 @@ If you are upgrading from (i.e. your current version of Airbyte is) Airbyte vers Here's an example of what it might look like with the values filled in. It assumes that the downloaded `airbyte_archive.tar.gz` is in `/tmp`. ```bash - docker run --rm -v /tmp:/config airbyte/migration:0.50.39 --\ + docker run --rm -v /tmp:/config airbyte/migration:0.50.40 --\ --input /config/airbyte_archive.tar.gz\ --output /config/airbyte_archive_migrated.tar.gz ``` diff --git a/docs/understanding-airbyte/airbyte-protocol.md b/docs/understanding-airbyte/airbyte-protocol.md index 4c04e5fd06fd..6356757747e0 100644 --- a/docs/understanding-airbyte/airbyte-protocol.md +++ b/docs/understanding-airbyte/airbyte-protocol.md @@ -26,18 +26,26 @@ Each of these concepts is described in greater depth in their respective section The Airbyte Protocol is versioned independently of the Airbyte Platform, and the version number is used to determine the compatibility between connectors and the Airbyte Platform. -| Version | Date of Change | Pull Request(s) | Subject | -|:---------|:---------------|:--------------------------------------------------------------------------------------------------------------------|:---------------------------------------------------------------------------------| -| `v1.0.0` | 2022-11-28 | [17486](https://github.com/airbytehq/airbyte/pull/17486) & [19846](https://github.com/airbytehq/airbyte/pull/19846) | Well known data types added | -| `v0.3.2` | 2022-10-28 | [18875](https://github.com/airbytehq/airbyte/pull/18875) | `AirbyteEstimateTraceMessage` added | -| `v0.3.1` | 2022-10-12 | [17907](https://github.com/airbytehq/airbyte/pull/17907) | `AirbyteControlMessage.ConnectorConfig` added | -| `v0.3.0` | 2022-09-09 | [16479](https://github.com/airbytehq/airbyte/pull/16479) | `AirbyteLogMessage.stack_trace` added | -| `v0.2.0` | 2022-06-10 | [13573](https://github.com/airbytehq/airbyte/pull/13573) & [12586](https://github.com/airbytehq/airbyte/pull/12586) | `STREAM` and `GLOBAL` STATE messages | -| `v0.1.1` | 2022-06-06 | [13356](https://github.com/airbytehq/airbyte/pull/13356) | Add a namespace in association with the stream name | -| `v0.1.0` | 2022-05-03 | [12458](https://github.com/airbytehq/airbyte/pull/12458) & [12581](https://github.com/airbytehq/airbyte/pull/12581) | `AirbyteTraceMessage` added to allow connectors to better communicate exceptions | -| `v0.0.2` | 2021-11-15 | [7798](https://github.com/airbytehq/airbyte/pull/7798) | Support oAuth Connectors (internal) | -| `v0.0.1` | 2021-11-19 | [1021](https://github.com/airbytehq/airbyte/pull/1021) | Remove sub-JSON Schemas | -| `v0.0.0` | 2020-11-18 | [998](https://github.com/airbytehq/airbyte/pull/998) | Initial version described via JSON Schema | +| Version | Date of Change | Pull Request(s) | Subject | +|:---------|:---------------|:--------------------------------------------------------------------------------------------------------------------------|:----------------------------------------------------------------------------------| +| `v0.5.2` | 2023-12-26 | [58](https://github.com/airbytehq/airbyte-protocol/pull/58) | Remove unused V1. | +| `v0.5.1` | 2023-04-12 | [53](https://github.com/airbytehq/airbyte-protocol/pull/53) | Modify various helper libraries. | +| `v0.5.0` | 2023-11-13 | [49](https://github.com/airbytehq/airbyte-protocol/pull/49) | `AirbyteStateStatsMessage` added. | +| `v0.4.2` | 2023-04-12 | [46](https://github.com/airbytehq/airbyte-protocol/pull/46) | `AirbyteAnalyticsTraceMessage` added. | +| `v0.4.1` | 2023-08-14 | [41](https://github.com/airbytehq/airbyte-protocol/pull/41) & [44](https://github.com/airbytehq/airbyte-protocol/pull/44) | Various bug fixes. | +| `v0.3.6` | 2023-04-21 | [34](https://github.com/airbytehq/airbyte-protocol/pull/34) | Add explicit `AirbyteStreamStatus` statue values. | +| `v0.3.5` | 2023-04-13 | [30](https://github.com/airbytehq/airbyte-protocol/pull/30) | Fix indentation. | +| `v0.3.4` | 2023-04-13 | [28](https://github.com/airbytehq/airbyte-protocol/pull/28) | Fix Indentation. | +| `v0.3.3` | 2023-04-12 | [18](https://github.com/airbytehq/airbyte-protocol/pull/18) | `AirbyteStreamStatusMessage` added. | +| `v0.3.2` | 2022-10-28 | [18875](https://github.com/airbytehq/airbyte/pull/18875) | `AirbyteEstimateTraceMessage` added. | +| `v0.3.1` | 2022-10-12 | [17907](https://github.com/airbytehq/airbyte/pull/17907) | `AirbyteControlMessage.ConnectorConfig` added. | +| `v0.3.0` | 2022-09-09 | [16479](https://github.com/airbytehq/airbyte/pull/16479) | `AirbyteLogMessage.stack_trace` added. | +| `v0.2.0` | 2022-06-10 | [13573](https://github.com/airbytehq/airbyte/pull/13573) & [12586](https://github.com/airbytehq/airbyte/pull/12586) | `STREAM` and `GLOBAL` STATE messages. | +| `v0.1.1` | 2022-06-06 | [13356](https://github.com/airbytehq/airbyte/pull/13356) | Add a namespace in association with the stream name. | +| `v0.1.0` | 2022-05-03 | [12458](https://github.com/airbytehq/airbyte/pull/12458) & [12581](https://github.com/airbytehq/airbyte/pull/12581) | `AirbyteTraceMessage` added to allow connectors to better communicate exceptions. | +| `v0.0.2` | 2021-11-15 | [7798](https://github.com/airbytehq/airbyte/pull/7798) | Support oAuth Connectors (internal). | +| `v0.0.1` | 2021-11-19 | [1021](https://github.com/airbytehq/airbyte/pull/1021) | Remove sub-JSON Schemas. | +| `v0.0.0` | 2020-11-18 | [998](https://github.com/airbytehq/airbyte/pull/998) | Initial version described via JSON Schema. | ## Actor Interface @@ -449,6 +457,8 @@ This concept enables incremental syncs--syncs that only replicate data that is n State also enables Partial Success. In the case where during a sync there is a failure before all data has been extracted and committed, if all records up to a certain state are committed, then the next time the sync happens, it can start from that state as opposed to going back to the beginning. Partial Success is powerful, because especially in the case of high data volumes and long syncs, being able to pick up from wherever the failure occurred can costly re-syncing of data that has already been replicated. +The state for an actor is emitted as a black box by the Source. When emitted it is wrapped in the [AirbyteStateMessage](#airbytestatemessage). The contents of the `data` field is what is passed to the Source on start up. It is up to the Source to interpret the state object. Nothing outside the Source can make any inference about the state of the object EXCEPT, if it is null, it can be concluded that there is no state and the Source will start at the beginning. + ### State & Source This section will step through how state is used to allow a Source to pick up where it left off. A Source takes state as an input. A Source should be able to take that input and use it to determine where it left off the last time. The contents of the Source is a black box to the Protocol. The Protocol provides an envelope for the Source to put its state in and then passes the state back in that envelope. The Protocol never needs to know anything about the contents of the state. Thus, the Source can track state however makes most sense to it. @@ -478,19 +488,14 @@ The normal success case (T3, not depicted) would be that all the records would m -- [link](https://whimsical.com/state-TYX5bSCVtVF4BU1JbUwfpZ) to source image -### V1 - -The state for an actor is emitted as a complete black box. When emitted it is wrapped in the [AirbyteStateMessage](#airbytestatemessage-v1). The contents of the `data` field is what is passed to the Source on start up. This gives the Source lead to decide how to track the state of each stream. That being said, a common pattern is a `Map`. Nothing outside the source can make any inference about the state of the object EXCEPT, if it is null, it can be concluded that there is no state and the Source will start at the beginning. - -### V2 (coming soon!) - -In addition to allowing a Source to checkpoint data replication, the state object is structure to allow for the ability to configure and reset streams in isolation from each other. For example, if adding or removing a stream, it is possible to do so without affecting the state of any other stream in the Source. +### State Types +In addition to allowing a Source to checkpoint data replication, the state object allows for the ability to configure and reset streams in isolation from each other. For example, if adding or removing a stream, it is possible to do so without affecting the state of any other stream in the Source. There are 3 types of state: Stream, Global, and Legacy. - **Stream** represents Sources where there is complete isolation between stream states. In these cases, the state for each stream will be emitted in its own state message. In other words, if there are 3 streams replicated during a sync, the Source would emit at least 3 state message (1 per stream). The state of the Source is the sum of all the stream states. - **Global** represents Sources where this shared state across streams. In these cases each state message contains the whole state for the connection. The `shared_state` field is where any information that is shared across streams must go. The `stream_states` field contains a list of objects that contain a Stream Descriptor and the state information for that stream that is stream-specific. There are drawbacks to this state type, so it should only be used in cases where a shared state between streams is unavoidable. -- **Legacy** exists for backwards compatibility. In this state type, the state object is totally a black box. The only inference tha can be drawn from the state object is that if it is null, then there is no state for the entire Source. All current legacy cases can be ported to stream or global. Once they are, it will be removed. +- **Legacy** exists for backwards compatibility. In this state type, the state object is totally a black box. The only inference tha can be drawn from the state object is that if it is null, then there is no state for the entire Source. **All current legacy cases are being ported to stream or global. Once they are, it will be removed.** This table breaks down attributes of these state types. @@ -500,11 +505,45 @@ This table breaks down attributes of these state types. | Stream-Level Replication Isolation | X | | | | Single state message describes full state for Source | | X | X | -- **Protocol Version** simply connotes which versions of the Protocol have support for these State types. The new state message is backwards compatible with the V1 message. This allows old versions of connectors and platforms to interact with the new message. - **Stream-Level Configuration / Reset** was mentioned above. The drawback of the old state struct was that it was not possible to configure or reset the state for a single stream without doing it for all of them. Thus, new state types support this, but the legacy one cannot. - **Stream-Level Replication Isolation** means that a Source could be run in parallel by splitting up its streams across running instances. This is only possible for Stream state types, because they are the only state type that can update its current state completely on a per-stream basis. This is one of the main drawbacks of Sources that use Global state; it is not possible to increase their throughput through parallelization. - **Single state message describes full state for Source** means that any state message contains the full state information for a Source. Stream does not meet this condition because each state message is scoped by stream. This means that in order to build a full picture of the state for the Source, the state messages for each configured stream must be gathered. +### State Principles +The following are principles Airbyte recommends Sources/Destinations adhere to with State. Airbyte enforces these principles via our CDK. + +These principles are intended to produce simple overall system behavior, and move Airbyte towards a world of shorter-lived jobs. The goal is reliable data movement with minimal data loss windows on errors. + +1. **New Sources must use per-stream/global State**. + + Per-stream/Global state unlocks more granular State operations e.g. per-stream resets, per-stream parallelisation etc. No new Connectors should be created using Legacy state. + +2. **Sources always emit State, regardless of sync mode.** + + This simplifies how the Platform treats jobs and means all Syncs are resumable. This also enables checkpointing on full refreshes in the future. This rule does not appear to Sources that do not support cursors. + However: + 1. If the source stream has no records, an empty state should still be emitted. This supports state-based counts/checksums. It is recommended for the emitted state to have unique and non-null content. + 2. If the stream is unsorted, and therefore non-resumable, it is recommended to still send a state message, even with bogus resumability, to indicate progress in the sync. + +3. **Sources do not emit sequential duplicate States with interleaved records.** + + Duplicate States make it challenging to debug state-related operations. E.g. Is this a duplicate or did we fail to properly update state? Is this a duplicate log? Sync will fail if this rule is violated. + +4. **Sources should emit state whenever it is meaningful to resume a failed sync. Platform reserves the right to discard too frequent State emission per internal platform rules.** + + Sources should strive to emit state as fast as it’s useful. Platform can discard this state if this leads to undesirable downstream behavior e.g. out of memory. This is fine as there is increasingly lower marginal value to emitting States at higher frequencies. + +5. **Platform & Destinations treat state as a black box.** + + Sources are the sole producer/consumer of a State messages’ contents. Precisely, this refers to the state fields within the various State messages. Modifying risks corrupting our data sync cursor, which is a strict no-no. + +6. **Destinations return state in the order it was received.** + + Order is used by the Platform to determine if a State message was dropped. Out-of-order State messages throw errors. + + Order-ness is determined by the type of State message. Per-stream state messages require order per-stream. Global state messages require global ordering. + + ## Messages ### Common @@ -615,26 +654,7 @@ AirbyteRecordMessage: type: integer ``` -### AirbyteStateMessage (V1) - -The state message enables the Source to emit checkpoints while replicating data. These checkpoints mean that if replication fails before completion, the next sync is able to start from the last checkpoint instead of returning to the beginning of the previous sync. The details of this process are described in [State & Checkpointing](#state--checkpointing). - -The state message is a wrapper around the state that a Source emits. The state that the Source emits is treated as a black box by the protocol--it is modeled as a JSON blob. - -```yaml -AirbyteStateMessage: - type: object - additionalProperties: true - required: - - data - properties: - data: - description: "the state data" - type: object - existingJavaType: com.fasterxml.jackson.databind.JsonNode -``` - -### AirbyteStateMessage (V2 -- coming soon!) +### AirbyteStateMessage The state message enables the Source to emit checkpoints while replicating data. These checkpoints mean that if replication fails before completion, the next sync is able to start from the last checkpoint instead of returning to the beginning of the previous sync. The details of this process are described in [State & Checkpointing](#state--checkpointing). diff --git a/docs/using-airbyte/getting-started/add-a-destination.md b/docs/using-airbyte/getting-started/add-a-destination.md index cc473d8384f3..d8957382efc6 100644 --- a/docs/using-airbyte/getting-started/add-a-destination.md +++ b/docs/using-airbyte/getting-started/add-a-destination.md @@ -1,3 +1,7 @@ +--- +products: all +--- + # Add a Destination Destinations are the data warehouses, data lakes, databases and analytics tools where you will load the data from your chosen source(s). The steps to setting up your first destination are very similar to those for [setting up a source](./add-a-source). diff --git a/docusaurus/sidebars.js b/docusaurus/sidebars.js index d1914f2c7360..e6d5340725fe 100644 --- a/docusaurus/sidebars.js +++ b/docusaurus/sidebars.js @@ -503,6 +503,7 @@ module.exports = { items: [ "operator-guides/configuring-airbyte-db", "operator-guides/configuring-connector-resources", + "operator-guides/telemetry", ] }, { diff --git a/gradle.properties b/gradle.properties index 3aaf08b25114..4d217ae30cfa 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -VERSION=0.50.39 +VERSION=0.50.40 # NOTE: some of these values are overwritten in CI! # NOTE: if you want to override this for your local machine, set overrides in ~/.gradle/gradle.properties diff --git a/run-ab-platform.sh b/run-ab-platform.sh index f12b3ab4b607..ae120562c2f4 100755 --- a/run-ab-platform.sh +++ b/run-ab-platform.sh @@ -1,6 +1,6 @@ #!/bin/bash -VERSION=0.50.39 +VERSION=0.50.40 # Run away from anything even a little scary set -o nounset # -u exit if a variable is not set set -o errexit # -f exit for any command failure"