Skip to main content

Snowbridge 5.x upgrade guide

Version 5.0.0 breaking changes

All sources

concurrent_writes setting has been removed. Concurrency is now configured at transformation and target levels: see batching model for more details.

Transformation configuration syntax

Multiple transform {} blocks are replaced by a single transform {} block containing multiple use sub-blocks.

Migration required: consolidate your transformation blocks into one.

Before:

hcl
transform {
use "spEnrichedFilter" {
atomic_field = "event_name"
regex = "^page_view$"
filter_action = "keep"
}
}

transform {
use "js" {
script_path = "/opt/script.js"
}
}

After (5.0.0):

hcl
transform {
use "spEnrichedFilter" {
atomic_field = "event_name"
regex = "^page_view$"
filter_action = "keep"
}

use "js" {
script_path = "/opt/script.js"
}
}

Transformations still run in the order they appear.

HTTP target

Headers configuration

headers setting now accepts an object structure to define custom headers.

Before:

hcl
target {
use "http" {
...
headers = "{\"Accept-Language\":\"en-US\"}"
}
}

After (5.0.0):

hcl
target {
use "http" {
...
headers = {
Accept-Language = "en-US"
}
}
}

Removal of deprecated settings

request_timeout_in_seconds setting has been removed.

Migration required: use request_timeout_in_millis setting instead.

Batching options renamed and moved

The per-request sizing options on the HTTP target have been renamed and moved into a nested batching {} block.

v4 field (top-level)v5 field (inside batching {})Default
request_max_messagesmax_batch_messages50
request_byte_limitmax_batch_bytes1048576
message_byte_limitmax_message_bytes1048576

Two additional fields are new in v5:

New fieldDefaultDescription
max_concurrent_batches5Number of batches written to the target concurrently.
flush_period_millis500Milliseconds between timer-based batch flushes.

Before:

hcl
target {
use "http" {
url = "https://acme.com/x"
request_max_messages = 20
request_byte_limit = 10000000
message_byte_limit = 10000000
}
}

After (5.0.0):

hcl
target {
use "http" {
url = "https://acme.com/x"

batching {
max_batch_messages = 20
max_batch_bytes = 10000000
max_message_bytes = 10000000
max_concurrent_batches = 5
flush_period_millis = 500
}
}
}

EventHub target

Fields have been renamed and moved into a nested batching {} block:

v4 field (top-level)v5 field (inside batching {})Default
chunk_message_limitmax_batch_messages500
chunk_byte_limitmax_batch_bytes1048576
message_byte_limitmax_message_bytes1048576
batch_byte_limitmax_batch_bytes1048576

Two additional fields are new in v5:

New fieldDefaultDescription
max_concurrent_batches5Number of batches written to the target concurrently.
flush_period_millis500Milliseconds between timer-based batch flushes.

Before:

hcl
target {
use "eventhub" {
message_byte_limit = 1000000
chunk_byte_limit = 1000000
chunk_message_limit = 501
batch_byte_limit = 1000000
}
}

After (5.0.0):

hcl
target {
use "eventhub" {
batching {
max_batch_messages = 501
max_batch_bytes = 10000000
max_message_bytes = 10000000
max_concurrent_batches = 5
flush_period_millis = 500
}
}
}

Kafka target

Fields have been renamed and moved into a nested batching {} block:

v4 field (top-level)v5 field (inside batching {})Default
flush_messagesmax_batch_messages100
flush_bytesmax_batch_bytes1048576
byte_limitmax_message_bytes1048576
flush_frequencyflush_period_millis500

One additional field is new in v5:

New fieldDefaultDescription
max_concurrent_batches5Number of batches written to the target concurrently.

Before:

hcl
target {
use "kafka" {
byte_limit = 1000000
flush_frequency = 2
flush_messages = 2
flush_bytes = 2
}
}

After (5.0.0):

hcl
target {
use "kafka" {
batching {
max_batch_messages = 501
max_batch_bytes = 10000000
max_message_bytes = 10000000
flush_period_millis = 500
max_concurrent_batches = 5
}
}
}

Kinesis target

Field have been renamed and moved into a nested batching {} block:

v4 field (top-level)v5 field (inside batching {})Default
request_max_messagesmax_batch_messages500

Four additional fields are new in v5:

New fieldDefaultDescription
max_batch_bytes5242880Maximum byte limit for a single batched request.
max_message_bytes1048576Maximum byte limit for individual message.
max_concurrent_batches5Number of batches written to the target concurrently.
flush_period_millis500Milliseconds between timer-based batch flushes.

Before:

hcl
target {
use "kinesis" {
request_max_messages = 1
}
}

After (5.0.0):

hcl
target {
use "kinesis" {
batching {
max_batch_messages = 1
max_batch_bytes = 5242880
max_message_bytes = 1048576
max_concurrent_batches = 5
flush_period_millis = 500
}
}
}

PubSub & SQS targets

Similarly to the rest of the targets, PubSub and SQS targets now support a nested batching {} block:

  • Pubsub
FieldDefaultDescription
max_batch_messages100Maximum number of events that can go into one batched request
max_batch_bytes10485760Maximum byte limit for a single batched request.
max_message_bytes10485760Maximum byte limit for individual message.
max_concurrent_batches5Number of batches written to the target concurrently.
flush_period_millis500Milliseconds between timer-based batch flushes.
  • SQS
FieldDefaultDescription
max_batch_messages10Maximum number of events that can go into one batched request
max_batch_bytes1048576Maximum byte limit for a single batched request.
max_message_bytes1048576Maximum byte limit for individual message.
max_concurrent_batches5Number of batches written to the target concurrently.
flush_period_millis500Milliseconds between timer-based batch flushes.

All targets

If batching {} block is not specified for the selected target, then target would use it's default batching configuration.