Update module github.com/Jeffail/benthos/v3 to v4 - autoclosed
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
github.com/Jeffail/benthos/v3 | require | major |
v3.65.0 -> v4.26.0
|
Release Notes
Jeffail/benthos (github.com/Jeffail/benthos/v3)
v4.26.0
For installation instructions check out the getting started guide.
Added
- Field
credit
added to theamqp_1
input to specify the maximum number of unacknowledged messages the sender can transmit. - Bloblang now supports root-level
if
statements. - New experimental
sql
cache. - Fields
batch_size
,sort
andlimit
added to themongodb
input. - Field
idemponent_write
added to thekafka
output.
Changed
- The default value of the
amqp_1.credit
input has changed from1
to64
. - The
mongodb
processor and output now support extended JSON in canonical form for document, filter and hint mappings. - The
open_telemetry_collector
tracer has had theurl
field of gRPC and HTTP collectors deprecated in favour ofaddress
, which more accurately describes the intended format of endpoints. The old style will continue to work, but eventually will have its default value removed and an explicit value will be required.
Fixed
- Resource config imports containing
%
characters were being incorrectly parsed during unit test execution. This was a regression introduced in v4.25.0. - Dynamic input and output config updates containing
%
characters were being incorrectly parsed. This was a regression introduced in v4.25.0.
The full change log can be found here.
v4.25.1
For installation instructions check out the getting started guide.
Fixed
- Fixed a regression in v4.25.0 where template based components were not parsing correctly from configs.
The full change log can be found here.
v4.25.0
For installation instructions check out the getting started guide.
Added
- Field
address_cache
added to thesocket_server
input. - Field
read_header
added to theamqp_1
input. - All inputs with a
codec
field now support a new fieldscanner
to replace it. Scanners are more powerful as they are configured in a structured way similar to other component types rather than via a single string field, for more information check out the scanners page. - New
diff
andpatch
Bloblang methods. - New
processors
processor. - Field
read_header
added to theamqp_1
input. - A debug endpoint
/debug/pprof/allocs
has been added for profiling allocations. - New
cockroachdb_changefeed
input. - The
open_telemetry_collector
tracer now supports sampling. - The
aws_kinesis
input and output now support specifying ARNs as the stream target. - New
azure_cosmosdb
input, processor and output. - All
sql_*
components now support thegocosmos
driver. - New
opensearch
output.
Fixed
- The
javascript
processor now handles module imports correctly. - Bloblang
if
statements now provide explicit errors when query expressions resolve to non-boolean values. - Some metadata fields from the
amqp_1
input were always empty due to type mismatch, this should no longer be the case. - The
zip
Bloblang method no longer fails when executed without arguments. - The
amqp_0_9
output no longer prints bogus exchange name when connecting to the server. - The
generate
input no longer adds an extra second tointerval: '@​every x'
syntax. - The
nats_jetstream
input no longer fails to locate mirrored streams. - Fixed a rare panic in batching mechanisms with a specified
period
, where data arrives in low volumes and is sporadic. - Executing config unit tests should no longer fail due to output resources failing to connect.
Changed
- The
parse_parquet
Bloblang function,parquet_decode
,parquet_encode
processors and theparquet
input have all been upgraded to the latest version of the underlying Parquet library. Since this underlying library is experimental it is likely that behaviour changes will result. One significant change is that encoding numerical values that are larger than the column type (float64
intoFLOAT
,int64
intoINT32
, etc) will no longer be automatically converted. - The
parse_log
processor fieldcodec
is now deprecated. - WARNING: Many components have had their underlying implementations moved onto newer internal APIs for defining and extracting their configuration fields. It's recommended that upgrades to this version are performed cautiously.
- WARNING: All AWS components have been upgraded to the latest client libraries. Although lots of testing has been done, these libraries have the potential to differ in discrete ways in terms of how credentials are evaluated, cross-account connections are performed, and so on. It's recommended that upgrades to this version are performed cautiously.
The full change log can be found here.
v4.24.0
For installation instructions check out the getting started guide.
Added
- Field
idempotent_write
added to thekafka_franz
output. - Field
idle_timeout
added to theread_until
input. - Field
delay_seconds
added to theaws_sqs
output. - Fields
discard_unknown
anduse_proto_names
added to theprotobuf
processors.
Fixed
- Bloblang error messages for bad function/method names or parameters should now be improved in mappings that use shorthand for
root = ...
. - All redis components now support usernames within the configured URL for authentication.
- The
protobuf
processor now supports targetting nested types from proto files. - The
schema_registry_encode
andschema_registry_decode
processors should no longer double escape URL unsafe characters within subjects when querying their latest versions.
The full change log can be found here.
v4.23.0
For installation instructions check out the getting started guide.
Added
- The
amqp_0_9
output now supports dynamic interpolation functions within theexchange
field. - Field
custom_topic_creation
added to thekafka
output. - New Bloblang method
ts_sub
. - The Bloblang method
abs
now supports integers in and integers out. - Experimental
extract_tracing_map
field added to thenats
,nats_jetstream
andnats_stream
inputs. - Experimental
inject_tracing_map
field added to thenats
,nats_jetstream
andnats_stream
outputs. - New
_fail_fast
variants for thebroker
outputfan_out
andfan_out_sequential
patterns. - Field
summary_quantiles_objectives
added to theprometheus
metrics exporter. - The
metric
processor now supports floating point values forcounter_by
andgauge
types.
Fixed
- Allow labels on caches and rate limit resources when writing configs in CUE.
- Go API:
log/slog
loggers injected into a stream builder viaStreamBuilder.SetLogger
should now respect formatting strings. - All Azure components now support container SAS tokens for authentication.
- The
kafka_franz
input now provides properly typed metadata values. - The
trino
driver for the varioussql_*
components no longer panics when trying to insert nulls. - The
http_client
input no longer sends a phantom request body on subsequent requests when an emptypayload
is specified. - The
schema_registry_encode
andschema_registry_decode
processors should no longer fail to obtain schemas containing slashes (or other URL path unfriendly characters). - The
parse_log
processor no longer extracts structured fields that are incompatible with Bloblang mappings. - Fixed occurrences where Bloblang would fail to recognise
float32
values.
The full change log can be found here.
v4.22.0
For installation instructions check out the getting started guide.
Added
- The
-e/--env-file
cli flag for importing environment variable files now supports glob patterns. - Environment variables imported via
-e/--env-file
cli flags now support triple quoted strings. - New experimental
counter
function added to Bloblang. It is recommended that this function, although experimental, should be used instead of the now deprecatedcount
function. - The
schema_registry_encode
andschema_registry_decode
processors now support JSONSchema. - Field
metadata
added to thenats
andnats_jetstream
outputs. - The
cached
processor fieldttl
now supports interpolation functions. - Many new properties fields have been added to the
amqp_0_9
output. - Field
command
added to theredis_list
input and output.
Fixed
- Corrected a scheduling error where the
generate
input with a descriptor interval (@hourly
, etc) had a chance of firing twice. - Fixed an issue where a
redis_streams
input that is rejected from read attempts enters a reconnect loop without backoff. - The
sqs
input now periodically refreshes the visibility timeout of messages that take a significant amount of time to process. - The
ts_add_iso8601
andts_sub_iso8601
bloblang methods now return the correct error for certain invalid durations. - The
discord
output no longer ignores structured message fields containing underscores. - Fixed an issue where the
kafka_franz
input was ignoring batching periods and stalling.
Changed
- The
random_int
Bloblang function now prevents instantiations where either themax
ormin
arguments are dynamic. This is in order to avoid situations where the random number generator is re-initialised across subsequent mappings in a way that surprises map authors.
The full change log can be found here.
v4.21.0
For installation instructions check out the getting started guide.
Added
- Fields
client_id
andrack_id
added to thekafka_franz
input and output. - New experimental
command
processor. - Parameter
no_cache
added to thefile
andenv
Bloblang functions. - New
file_rel
function added to Bloblang. - Field
endpoint_params
added to theoauth2
section of HTTP client components.
Fixed
- Allow comments in single root and directly imported bloblang mappings.
- The
azure_blob_storage
input no longer addsblob_storage_content_type
andblob_storage_content_encoding
metadata values as string pointer types, and instead adds these values as string types only when they are present. - The
http_server
input now returns a more appropriate 503 service unavailable status code during shutdown instead of the previous 404 status. - Fixed a potential panic when closing a
pusher
output that was never initialised. - The
sftp
output now reconnects upon being disconnected by the Azure idle timeout. - The
switch
output now produces error logs when messages do not pass at least one case withstrict_mode
enabled, previously these rejected messages were potentially re-processed in a loop without any logs depending on the config. An inaccuracy to the documentation has also been fixed in order to clarify behaviour when strict mode is not enabled. - The
log
processorfields_mapping
field should no longer reject metadata queries using@
syntax. - Fixed an issue where heavily utilised streams with nested resource based outputs could lock-up when performing heavy resource mutating traffic on the streams mode REST API.
- The Bloblang
zip
method no longer produces values that yield an "Unknown data type".
The full change log can be found here.
v4.20.0
For installation instructions check out the getting started guide.
Added
- The
amqp1
input now supportsanonymous
SASL authentication. - New JWT Bloblang methods
parse_jwt_es256
,parse_jwt_es384
,parse_jwt_es512
,parse_jwt_rs256
,parse_jwt_rs384
,parse_jwt_rs512
,sign_jwt_es256
,sign_jwt_es384
andsign_jwt_es512
added. - The
csv-safe
input codec now supports custom delimiters with the syntaxcsv-safe:x
. - The
open_telemetry_collector
tracer now supports secure connections, enabled via thesecure
field. - Function
v0_msg_exists_meta
added to thejavascript
processor.
Fixed
- Fixed an issue where saturated output resources could panic under intense CRUD activity.
- The config linter no longer raises issues with codec fields containing colons within their arguments.
- The
elasticsearch
output should no longer fail to send basic authentication passwords, this fixes a regression introduced in v4.19.0.
The full change log can be found here.
v4.19.0
For installation instructions check out the getting started guide.
Added
- Field
topics_pattern
added to thepulsar
input. - Both the
schema_registry_encode
andschema_registry_decode
processors now support protobuf schemas. - Both the
schema_registry_encode
andschema_registry_decode
processors now support references for AVRO and PROTOBUF schemas. - New Bloblang method
zip
. - New Bloblang
int8
,int16
,uint8
,uint16
,float32
andfloat64
methods.
Fixed
- Errors encountered by the
gcp_pubsub
output should now present more specific logs. - Upgraded
kafka
input and output underlying sarama client library to v1.40.0 at new module path github.com/IBM/sarama - The CUE schema for
switch
processor now correctly reflects that it takes a list of clauses. - Fixed the CUE schema for fields that take a 2d-array such as
workflow.order
. - The
snowflake_put
output has been added back to 32-bit ARM builds since the build incompatibilities have been resolved. - The
snowflake_put
output and thesql_*
components no longer trigger a panic when running on a readonly file system with thesnowflake
driver. This driver still requires access to write temporary files somewhere, which can be configured via the GoTMPDIR
environment variable. Details here. - The
http_server
input and output now follow the same multiplexer rules regardless of whether the generalhttp
server block is used or a custom endpoint. - Config linting should now respect fields sourced via a merge key (
<<
). - The
lint
subcommand should now lint config files pointed to via-r
/--resources
flags.
Changed
- The
snowflake_put
output is now beta. - Endpoints specified by
http_server
components using both the generalhttp
server block or their own custom server addresses should no longer be treated as path prefixes unless the path ends with a slash (/
), in which case all extensions of the path will match. This corrects a behavioural change introduced in v4.14.0.
The full change log can be found here.
v4.18.0
For installation instructions check out the getting started guide.
Added
- Field
logger.level_name
added for customising the name of log levels in the JSON format. - Methods
sign_jwt_rs256
,sign_jwt_rs384
andsign_jwt_rs512
added to Bloblang.
Fixed
- HTTP components no longer ignore
proxy_url
settings when OAuth2 is set. - The
PATCH
verb for the streams mode REST API no longer fails to patch over newer components implemented with the latest plugin APIs. - The
nats_jetstream
input no longer fails for configs that setbind
totrue
and do not specify both astream
anddurable
together. - The
mongodb
processor and output no longer ignores theupsert
field.
Changed
- The old
parquet
processor (now superseded byparquet_encode
andparquet_decode
) has been removed from 32-bit ARM builds due to build incompatibilities. - The
snowflake_put
output has been removed from 32-bit ARM builds due to build incompatibilities. - Plugin API: The
(*BatchError).WalkMessages
method has been deprecated in favour ofWalkMessagesIndexedBy
.
The full change log can be found here.
v4.17.0
For installation instructions check out the getting started guide.
Added
- The
dynamic
input and output have a new endpoint/input/{id}/uptime
and/output/{id}/uptime
respectively for obtaining the uptime of a given input/output. - Field
wait_time_seconds
added to theaws_sqs
input. - Field
timeout
added to thegcp_cloud_storage
output. - All NATS components now set the name of each connection to the component label when specified.
Fixed
- Restore message ordering support to
gcp_pubsub
output. This issue was introduced in 4.16.0 as a result of #1836. - Specifying structured metadata values (non-strings) in unit test definitions should no longer cause linting errors.
Changed
- The
nats
input default value ofprefetch_count
has been increased from32
to a more appropriate524288
.
The full change log can be found here.
v4.16.0
For installation instructions check out the getting started guide.
Added
- Fields
auth.user_jwt
andauth.user_nkey_seed
added to all NATS components. - bloblang: added
ulid(encoding, random_source)
function to generate Universally Unique Lexicographically Sortable Identifiers (ULIDs). - Field
skip_on
added to thecached
processor. - Field
nak_delay
added to thenats
input. - New
splunk_hec
output. - Plugin API: New
NewMetadataExcludeFilterField
function and accompanyingFieldMetadataExcludeFilter
method added. - The
pulsar
input and output are now included in the main distribution of Benthos again. - The
gcp_pubsub
input now adds the metadata fieldgcp_pubsub_delivery_attempt
to messages when dead lettering is enabled. - The
aws_s3
input now addss3_version_id
metadata to versioned messages. - All compress/decompress components (codecs, bloblang methods, processors) now support
pgzip
. - Field
connection.max_retries
added to thewebsocket
input. - New
sentry_capture
processor.
Fixed
- The
open_telemetry_collector
tracer option no longer blocks service start up when the endpoints cannot be reached, and instead manages connections in the background. - The
gcp_pubsub
output should see significant performance improvements due to a client library upgrade. - The stream builder APIs should now follow
logger.file
config fields. - The experimental
cue
format in the clilist
subcommand no longer introduces infinite recursion for#Processors
. - Config unit tests no longer execute linting rules for missing env var interpolations.
The full change log can be found here.
v4.15.0
For installation instructions check out the getting started guide.
Added
- Flag
--skip-env-var-check
added to thelint
subcommand, this disables the new linting behaviour where environment variable interpolations without defaults throw linting errors when the variable is not defined. - The
kafka_franz
input now supports explicit partitions in the fieldtopics
. - The
kafka_franz
input now supports batching. - New
metadata
Bloblang function for batch-aware structured metadata queries. - Go API: Running the Benthos CLI with a context set with a deadline now triggers graceful termination before the deadline is reached.
- Go API: New
public/service/servicetest
package added for functions useful for testing custom Benthos builds. - New
lru
andttlru
in-memory caches.
Fixed
- Provide msgpack plugins through
public/components/msgpack
. - The
kafka_franz
input should no longer commit offsets one behind the next during partition yielding. - The streams mode HTTP API should no longer route requests to
/streams/<stream-ID>
to the/streams
handler. This issue was introduced in v4.14.0.
The full change log can be found here.
v4.14.0
For installation instructions check out the getting started guide.
Added
- The
-e/--env-file
cli flag can now be specified multiple times. - New
studio pull
cli subcommand for running Benthos Studio session deployments. - Metadata field
kafka_tombstone_message
added to thekafka
andkafka_franz
inputs. - Method
SetEnvVarLookupFunc
added to the stream builder API. - The
discord
input and output now use the official chat client API and no longer rely on poll-based HTTP requests, this should result in more efficient and less erroneous behaviour. - New bloblang timestamp methods
ts_add_iso8601
andts_sub_iso8601
. - All SQL components now support the
trino
driver. - New input codec
csv-safe
. - Added
base64rawurl
scheme to both theencode
anddecode
Bloblang methods. - New
find_by
andfind_all_by
Bloblang methods. - New
skipbom
input codec. - New
javascript
processor.
Fixed
- The
find_all
bloblang method no longer produces results that are of anunknown
type. - The
find_all
andfind
Bloblang methods no longer fail when the value argument is a field reference. - Endpoints specified by HTTP server components using both the general
http
server block or their own custom server addresses should now be treated as path prefixes. This corrects a behavioural change that was introduced when both respective server options were updated to support path parameters. - Prevented a panic caused when using the
encrypt_aes
anddecrypt_aes
Bloblang methods with a mismatched key/iv lengths. - The
snowpipe
field of thesnowflake_put
output can now be omitted from the config without raising an error. - Batch-aware processors such as
mapping
andmutation
should now report correct error metrics. - Running
benthos blobl server
should no longer panic when a mapping with variable read/writes is executed in parallel. - Speculative fix for the
cloudwatch
metrics exporter rejecting metrics due tominimum field size of 1, PutMetricDataInput.MetricData[0].Dimensions[0].Value
. - The
snowflake_put
output now prevents silent failures under certain conditions. Details here. - Reduced the amount of pre-compilation of Bloblang based linting rules for documentation fields, this should dramatically improve the start up time of Benthos (~1s down to ~200ms).
- Environment variable interpolations with an empty fallback (
${FOO:}
) are now valid. - Fixed an issue where the
mongodb
output wasn't using bulk send requests according to batching policies. - The
amqp_1
input now falls back to accessingMessage.Value
when the data is empty.
Changed
- When a config contains environment variable interpolations without a default value (i.e.
${FOO}
), if that environment variable is not defined a linting error will be emitted. Shutting down due to linting errors can be disabled with the--chilled
cli flag, and variables can be specified with an empty default value (${FOO:}
) in order to make the previous behaviour explicit and prevent the new linting error. - The
find
andfind_all
Bloblang methods no longer support query arguments as they were incompatible with supporting value arguments. For query based arguments use the newfind_by
andfind_all_by
methods.
The full change log can be found here.
v4.13.0
For installation instructions check out the getting started guide.
Added
- New
nats_kv
processor, input and output. - Field
partition
added to thekafka_franz
output, allowing for manual partitioning.
Fixed
- The
broker
output with the patternfan_out_sequential
will no longer abandon in-flight requests that are error blocked until the full shutdown timeout has occurred. - The
broker
input no longer reports itself as unavailable when a child input has intentionally closed. - Config unit tests that check for structured data should no longer fail in all cases.
- The
http_server
input with a custom address now supports path variables.
The full change log can be found here.
v4.12.1
For installation instructions check out the getting started guide.
Fixed
- Fixed a regression bug in the
nats
components where panics occur during a flood of messages. This issue was introduced in v4.12.0 (45f785a
).
The full change log can be found here.
v4.12.0
For installation instructions check out the getting started guide.
Added
- Format
csv:x
added to theunarchive
processor. - Field
max_buffer
added to theaws_s3
input. - Field
open_message_type
added to thewebsocket
input. - The experimental
--watcher
cli flag now takes into account file deletions and new files that match wildcard patterns. - Field
dump_request_log_level
added to HTTP components. - New
couchbase
cache implementation. - New
compress
anddecompress
Bloblang methods. - Field
endpoint
added to thegcp_pubsub
input and output. - Fields
file_name
,file_extension
andrequest_id
added to thesnowflake_put
output. - Add interpolation support to the
path
field of thesnowflake_put
output. - Add ZSTD compression support to the
compression
field of thesnowflake_put
output. - New Bloblang method
concat
. - New
redis
ratelimit. - The
socket_server
input now supportstls
as a network type. - New bloblang function
timestamp_unix_milli
. - New bloblang method
ts_unix_milli
. - JWT based HTTP authentication now supports
EdDSA
. - New
flow_control
fields added to thegcp_pubsub
output. - Added bloblang methods
sign_jwt_hs256
,sign_jwt_hs384
andsign_jwt_hs512
- New bloblang methods
parse_jwt_hs256
,parse_jwt_hs384
,parse_jwt_hs512
. - The
open_telemetry_collector
tracer now automatically sets theservice.name
andservice.version
tags if they are not configured by the user. - New bloblang string methods
trim_prefix
andtrim_suffix
.
Fixed
- Fixed an issue where messages caught in a retry loop from inputs that do not support nacks (
generate
,kafka
,file
, etc) could be retried in their post-mutation form from theswitch
output rather than the original copy of the message. - The
sqlite
buffer should no longer printFailed to ack buffer message
logs during graceful termination. - The default value of the
conn_max_idle
field has been changed from 0 to 2 for allsql_*
components in accordance to thedatabase/sql
docs. - The
parse_csv
bloblang method withparse_header_row
set tofalse
no longer produces rows that are of anunknown
type. - Fixed a bug where the
oracle
driver for thesql_*
components was returning timestamps which were getting marshalled into an empty JSON object instead of a string. - The
aws_sqs
input no longer backs off on subsequent empty requests when long polling is enabled. - It's now possible to mock resources within the main test target file in config unit tests.
- Unit test linting no longer incorrectly expects the
json_contains
predicate to contain a string value only. - Config component initialisation errors should no longer show nested path annotations.
- Prevented panics from the
jq
processor when querying invalid types. - The
jaeger
tracer no longer emits theservice.version
tag automatically if the user sets theservice.name
tag explicitly. - The
int64()
,int32()
,uint64()
anduint32()
bloblang methods can now infer the number base as documented here. - The
mapping
andmutation
processors should provide metrics and tracing events again. - Fixed a data race in the
redis_streams
input. - Upgraded the Redis components to
github.com/redis/go-redis/v9
.
The full change log can be found here.
v4.11.0
For installation instructions check out the getting started guide.
Added
- Field
default_encoding
added to theparquet_encode
processor. - Field
client_session_keep_alive
added to thesnowflake_put
output. - Bloblang now supports metadata access via
@foo
syntax, which also supports arbitrary values. - TLS client certs now support both PKCS#1 and PKCS#8 encrypted keys.
- New
redis_script
processor. - New
wasm
processor. - Fields marked as secrets will no longer be printed with
benthos echo
or debug HTTP endpoints. - Add
no_indent
parameter to theformat_json
bloblang method. - New
format_xml
bloblang method. - New
batched
higher level input type. - The
gcp_pubsub
input now supports optionally creating subscriptions. - New
sqlite
buffer. - Bloblang now has
int64
,int32
,uint64
anduint32
methods for casting explicit integer types. - Field
application_properties_map
added to theamqp1
output. - Param
parse_header_row
,delimiter
andlazy_quotes
added to theparse_csv
bloblang method. - Field
delete_on_finish
added to thecsv
input. - Metadata fields
header
,path
,mod_time_unix
andmod_time
added to thecsv
input. - New
couchbase
processor. - Field
max_attempts
added to thensq
input. - Messages consumed by the
nsq
input are now enriched with metadata. - New Bloblang method
parse_url
.
Fixed
- Fixed a regression bug in the
mongodb
processor where message errors were not set any more. This issue was introduced in v4.7.0 (64eb72). - The
avro-ocf:marshaler=json
input codec now omits unexpected logical type fields. - Fixed a bug in the
sql_insert
output (see commitc6a71e9
) where transaction-based drivers (clickhouse
andoracle
) would fail to roll back an in-progress transaction if any of the messages caused an error. - The
resource
input should no longer block the first layer of graceful termination.
Changed
- The
catch
method now defines the context of argument mappings to be the string of the caught error. In previous cases the context was undocumented, vague and would often bind to the outer context. It's still possible to reference this outer context by capturing the error (e.g..catch(_ -> this)
). - Field interpolations that fail due to mapping errors will no longer produce placeholder values and will instead provide proper errors that result in nacks or retries similar to other issues.
The full change log can be found here.
v4.10.0
For installation instructions check out the getting started guide.
Added
- The
nats_jetstream
input now adds a range of useful metadata information to messages. - Field
transaction_type
added to theazure_table_storage
output, which deprecates the previousinsert_type
field and supports interpolation functions. - Field
logged_batch
added to thecassandra
output. - All
sql
components now support Snowflake. - New
azure_table_storage
input. - New
sql_raw
input. - New
tracing_id
bloblang function. - New
with
bloblang method. - Field
multi_header
added to thekafka
andkafka_franz
inputs. - New
cassandra
input. - New
base64_encode
andbase64_decode
functions for the awk processor. - Param
use_number
added to theparse_json
bloblang method. - Fields
init_statement
andinit_files
added to all sql components. - New
find
andfind_all
bloblang array methods.
Fixed
- The
gcp_cloud_storage
output no longer ignores errors when closing a written file, this was masking issues when the target bucket was invalid. - Upgraded the
kafka_franz
input and output to use github.com/twmb/franz-go@v1.9.0 since some bug fixes were made recently. - Fixed an issue where a
read_until
child input with processors affiliated would block graceful termination. - The
--labels
linting option no longer flags resource components.
The full change log can be found here.
v4.9.1
For installation instructions check out the getting started guide.
Added
- Go API: A new
BatchError
type added for distinguishing errors of a given batch.
Fixed
- Rolled back
kafka
input and output underlying sarama client library to fix a regression introduced in 4.9.0😅 whereinvalid configuration (Consumer.Group.Rebalance.GroupStrategies and Consumer.Group.Rebalance.Strategy cannot be set at the same time)
errors would prevent consumption under certain configurations. We've decided to roll back rather than upgrade as a breaking API change was introduced that could cause issues for Go API importers (more info here: https://github.com/Shopify/sarama/issues/2358).
The full change log can be found here.
v4.9.0
For installation instructions check out the getting started guide.
Added
- New
parquet
input for reading a batch of Parquet files from disk. - Field
max_in_flight
added to theredis_list
input.
Fixed
- Upgraded
kafka
input and output underlying sarama client library to fix a regression introduced in 4.7.0 whereThe requested offset is outside the range of offsets maintained by the server for the given topic/partition
errors would prevent consumption of partitions. - The
cassandra
output now inserts logged batches of data rather than the less efficient (and unnecessary) unlogged form.
The full change log can be found here.
v4.8.0
For installation instructions check out the getting started guide.
Added
- All
sql
components now support Oracle DB.
Fixed
- All SQL components now accept an empty or unspecified
args_mapping
as an alias for no arguments. - Field
unsafe_dynamic_query
added to thesql_raw
output. - Fixed a regression in 4.7.0 where HTTP client components were sending duplicate request headers.
The full change log can be found here.
v4.7.0
For installation instructions check out the getting started guide.
Added
- Field
avro_raw_json
added to theschema_registry_decode
processor. - Field
priority
added to thegcp_bigquery_select
input. - The
hash
bloblang method now supportscrc32
. - New
tracing_span
bloblang function. - All
sql
components now support SQLite. - New
beanstalkd
input and output. - Field
json_marshal_mode
added to themongodb
input. - The
schema_registry_encode
andschema_registry_decode
processors now support Basic, OAuth and JWT authentication.
Fixed
- The streams mode
/ready
endpoint no longer returns status503
for streams that gracefully finished. - The performance of the bloblang
.explode
method now scales linearly with the target size. - The
influxdb
andlogger
metrics outputs should no longer mix up tag names. - Fix a potential race condition in the
read_until
connect check on terminated input. - The
parse_parquet
bloblang method andparquet_decode
processor now automatically parseBYTE_ARRAY
values as strings when the logical type is UTF8. - The
gcp_cloud_storage
output now correctly cleans up temporary files on error conditions when the collision mode is set to append.
The full change log can be found here.
v4.6.0
For installation instructions check out the getting started guide.
Added
- New
squash
bloblang method. - New top-level config field
shutdown_delay
for delaying graceful termination. - New
snowflake_id
bloblang function. - Field
wait_time_seconds
added to theaws_sqs
input. - New
json_path
bloblang method. - New
file_json_contains
predicate for unit tests. - The
parquet_encode
processor now supports theUTF8
logical type for columns.
Fixed
- The
schema_registry_encode
processor now correctly assumes Avro JSON encoded documents by default. - The
redis
processorretry_period
no longer shows linting errors for duration strings. - The
/inputs
and/outputs
endpoints for dynamic inputs and outputs now correctly render configs, both structured within the JSON response and the raw config string. - Go API: The stream builder no longer ignores
http
configuration. Instead, the value ofhttp.enabled
is set tofalse
by default.
The full change log can be found here.
v4.5.1
For installation instructions check out the getting started guide.
Fixed
- Reverted
kafka_franz
dependency back to1.3.1
due to a regression in TLS/SASL commit retention. - Fixed an unintentional linting error when using interpolation functions in the
elasticsearch
outputsaction
field.
The full change log can be found here.
v4.5.0
For installation instructions check out the getting started guide.
Added
- Field
batch_size
added to thegenerate
input. - The
amqp_0_9
output now supports setting thetimeout
of publish. - New experimental input codec
avro-ocf:marshaler=x
. - New
mapping
andmutation
processors. - New
parse_form_url_encoded
bloblang method. - The
amqp_0_9
input now supports setting theauto-delete
bit during queue declaration. - New
open_telemetry_collector
tracer. - The
kafka_franz
input and output now supports no-op SASL options with the mechanismnone
. - Field
content_type
added to thegcp_cloud_storage
cache.
Fixed
- The
mongodb
processor and output defaultwrite_concern.w_timeout
empty value no longer causes configuration issues. - Field
message_name
added to the logger config. - The
amqp_1
input and output should no longer spam logs with timeout errors during graceful termination. - Fixed a potential crash when the
contains
bloblang method was used to compare complex types. - Fixed an issue where the
kafka_franz
input or output wouldn't use TLS connections without custom certificate configuration. - Fixed structural cycle in the CUE representation of the
retry
output. - Tracing headers from HTTP requests to the
http_server
input are now correctly extracted.
Changed
- The
broker
input no longer applies processors before batching as this was unintentional behaviour and counter to documentation. Users that rely on this behaviour are advised to place their pre-batching processors at the level of the child inputs of the broker. - The
broker
output no longer applies processors after batching as this was unintentional behaviour and counter to documentation. Users that rely on this behaviour are advised to place their post-batching processors at the level of the child outputs of the broker.
The full change log can be found here.
v4.4.1
For installation instructions check out the getting started guide.
Fixed
- Fixed an issue where an
http_server
input or output would fail to register prometheus metrics when combined with other inputs/outputs. - Fixed an issue where the
jaeger
tracer was incapable of sending traces to agents outside of the default port.
The full change log can be found here.
v4.4.0
For installation instructions check out the getting started guide.
Added
- The service-wide
http
config now supports basic authentication. - The
elasticsearch
output now supports upsert operations. - New
fake
bloblang function. - New
parquet_encode
andparquet_decode
processors. - New
parse_parquet
bloblang method. - CLI flag
--prefix-stream-endpoints
added for disabling streams mode API prefixing. - Field
timestamp_name
added to the logger config.
The full change log can be found here.
v4.3.0
For installation instructions check out the getting started guide.
Added
- Timestamp Bloblang methods are now able to emit and process
time.Time
values. - New
ts_tz
method for switching the timezone of timestamp values. - The
elasticsearch
output fieldtype
now supports interpolation functions. - The
redis
processor has been reworked to be more generally useful, the oldoperator
andkey
fields are now deprecated in favour of newcommand
andargs_mapping
fields. - Go API: Added component bundle
./public/components/aws
for all AWS components, including aRunLambda
function. - New
cached
processor. - Go API: New APIs for registering both metrics exporters and open telemetry tracer plugins.
- Go API: The stream builder API now supports configuring a tracer, and tracer configuration is now isolated to the stream being executed.
- Go API: Plugin components can now access input and output resources.
- The
redis_streams
output fieldstream
field now supports interpolation functions. - The
kafka_franz
input and outputs now supportAWS_MSK_IAM
as a SASL mechanism. - New
pusher
output. - Field
input_batches
added to config unit tests for injecting a series of message batches.
Fixed
- Corrected an issue where Prometheus metrics from batching at the buffer level would be skipped when combined with input/output level batching.
- Go API: Fixed an issue where running the CLI API without importing a component package would result in template init crashing.
- The
http
processor andhttp_client
input and output no longer have default headers as part of their configuration. AContent-Type
header will be added to requests with a default value ofapplication/octet-stream
when a message body is being sent and the configuration has not added one explicitly. - Logging in
logfmt
mode withadd_timestamp
enabled now works.
The full change log can be found here.
v4.2.0
For installation instructions check out the getting started guide.
Added
- Field
credentials.from_ec2_role
added to all AWS based components. - The
mongodb
input now supports aggregation filters by setting the newoperation
field. - New
gcp_cloudtrace
tracer. - New
slug
bloblang string method. - The
elasticsearch
output now supports thecreate
action. - Field
tls.root_cas_file
added to thepulsar
input and output. - The
fallback
output now adds a metadata fieldfallback_error
to messages when shifted. - New bloblang methods
ts_round
,ts_parse
,ts_format
,ts_strptime
,ts_strftime
,ts_unix
andts_unix_nano
. Most are aliases of (now deprecated) time methods withtimestamp_
prefixes. - Ability to write logs to a file (with optional rotation) instead of stdout.
Fixed
- The default docker image no longer throws configuration errors when running streams mode without an explicit general config.
- The field
metrics.mapping
now allows environment functions such ashostname
andenv
. - Fixed a lock-up in the
amqp_0_9
output caused when messages sent with theimmediate
ormandatory
flags were rejected. - Fixed a race condition upon creating dynamic streams that self-terminate, this was causing panics in cases where the stream finishes immediately.
The full change log can be found here.
v4.1.0
For installation instructions check out the getting started guide.
Added
- The
nats_jetstream
input now adds headers to messages as metadata. - Field
headers
added to thenats_jetstream
output. - Field
lazy_quotes
added to the CSV input.
Fixed
- Fixed an issue where resource and stream configs imported via wildcard pattern could not be live-reloaded with the watcher (
-w
) flag. - Bloblang comparisons between numerical values (including
match
expression patterns) no longer require coercion into explicit types. - Reintroduced basic metrics from the
twitter
anddiscord
template based inputs. - Prevented a metrics label mismatch when running in streams mode with resources and
prometheus
metrics. - Label mismatches with the
prometheus
metric type now log errors and skip the metric without stopping the service. - Fixed a case where empty files consumed by the
aws_s3
input would trigger early graceful termination.
The full change log can be found here.
v4.0.0
For installation instructions check out the getting started guide.
This is a major version release, for more information and guidance on how to migrate please refer to https://benthos.dev/docs/guides/migration/v4.
Added
- In Bloblang it is now possible to reference the
root
of the document being created within a mapping query. - The
nats_jetstream
input now supports pull consumers. - Field
max_number_of_messages
added to theaws_sqs
input. - Field
file_output_path
added to theprometheus
metrics type. - Unit test definitions can now specify a
label
as atarget_processors
value. - New connection settings for all sql components.
- New experimental
snowflake_put
output. - New experimental
gcp_cloud_storage
cache. - Field
regexp_topics
added to thekafka_franz
input. - The
hdfs
outputdirectory
field now supports interpolation functions. - The cli
list
subcommand now supports acue
format. - Field
jwt.headers
added to all HTTP client components. - Output condition
file_json_equals
added to config unit test definitions.
Fixed
- The
sftp
output no longer opens files in both read and write mode. - The
aws_sqs
input withreset_visibility
set tofalse
will no longer reset timeouts on pending messages during gracefully shutdown. - The
schema_registry_decode
processor now handles AVRO logical types correctly. Details in #1198 and #1161 and also in https://github.com/linkedin/goavro/issues/242.
Changed
- All components, features and configuration fields that were marked as deprecated have been removed.
- The
pulsar
input and output are no longer included in the default Benthos builds. - The field
pipeline.threads
field now defaults to-1
, which automatically matches the host machine CPU count. - Old style interpolation functions (
${!json:foo,1}
) are removed in favour of the newer Bloblang syntax (${! json("foo") }
). - The Bloblang functions
meta
,root_meta
,error
andenv
now returnnull
when the target value does not exist. - The
clickhouse
SQL driver Data Source Name format parameters have been changed due to a client library update. This also means placeholders insql_raw
components should use dollar syntax. - Docker images no longer come with a default config that contains generated environment variables, use
-s
flag arguments instead. - All cache components have had their retry/backoff fields modified for consistency.
- All cache components that support a general default TTL now have a field
default_ttl
with a duration string, replacing the previous field. - The
http
processor andhttp_client
output now execute message batch requests as individual requests by default. This behaviour can be disabled by explicitly settingbatch_as_multipart
totrue
. - Outputs that traditionally wrote empty newlines at the end of batches with >1 message when using the
lines
codec (socket
,stdout
,file
,sftp
) no longer do this by default. - The
switch
output fieldretry_until_success
now defaults tofalse
. - All AWS components now have a default
region
field that is empty, allowing environment variables or profile values to be used by default. - Serverless distributions of Benthos (AWS lambda, etc) have had the default output config changed to reject messages when the processing fails, this should make it easier to handle errors from invocation.
- The standard metrics emitted by Benthos have been largely simplified and improved, for more information check out the metrics page.
- The default metrics type is now
prometheus
. - The
http_server
metrics type has been renamed tojson_api
. - The
stdout
metrics type has been renamed tologger
. - The
logger
configuration section has been simplified, withlogfmt
being the new default format. - The
logger
fieldadd_timestamp
is nowfalse
by default. - Field
parts
has been removed from all processors. - Field
max_in_flight
has been removed from a range of output brokers as it no longer required. - The
dedupe
processor now acts upon individual messages by default, and thehash
field has been removed. - The
log
processor now executes for each individual message of a batch. - The
sleep
processor now executes for each individual message of a batch. - Go API: Module name has changed to
github.com/benthosdev/benthos/v4
. - Go API: All packages within the
lib
directory have been removed in favour of the newer APIs withinpublic
. - Go API: Distributed tracing is now via the Open Telemetry client library.
The full change log can be found here.
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.