Skip to content

Commit 44c8f1c

Browse files
thomasqueirozbpront
andcommitted
chore(releasing): prepare v0.51.1 release (#24214)
* chore(ci): reorganize integration test files (#24108) * chore(ci): reorganize integration test files * revert nats data move * fix paths to data * fix more paths * amqp fix * Fix logstash int tests shared files paths * Rename scripts/integration -> tests/integration * scripts/integration -> tests/integration in source files * Fix scripts->tests * Fix gcp paths * Fix http-client pem path * move nats data --------- Co-authored-by: Thomas <[email protected]> * chore(vdev): move all utils in a new utils folder (#24143) * chore(vdev): move all utils in a new utils folder * move remaining files to utils dir * move remaining files to utils dir * fmt * chore(vdev): make modules visible to rustfmt (#24162) * Remove mod inside cli_subcommands macro * cargo fmt * chore(vdev): apply vdev rust check fixes * Link to rustfmt issue * fix(vdev): release prepare vrl version pinning (#24158) * Add --dry-run to release prepare * Add error handling and checks to pin_vrl_version * Add wrapper to toml * Remove wrapper, parse as Table instead * Fix vrl pinning logic * Enable preserve_order feature in toml crate * Use dependency instead of whole toml * Fix dry run docs * Fix dry run wording * refactor to use toml_edit * Add update_vrl_to_version to add unit test * Use indoc in prepare.rs * Remove preserve_order feature * chore(deps): update VRL to add missing stdlib fns from 0.28 (#24178) * chore(ci): temporarily remove homebrew publish step from publish workflow (#24185) This temporarily removes the publish-homebrew job from the publish workflow to address issue #24139. This is step 1 of the plan to fix the homebrew publishing process. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude <[email protected]> * fix(blackhole sink): disable rate limiting for periodic stats messages (#24190) * fix(blackhole sink): disable rate limiting for periodic stats messages The blackhole sink's informational "Collected events" messages were being rate-limited since rate limiting was enabled by default in #24024. This is undesirable because: 1. These are deliberately scheduled periodic messages (controlled by the `print_interval_secs` config option), not error conditions that could flood the logs 2. Users explicitly configure the frequency - rate limiting defeats that explicit configuration and breaks user expectations 3. The interval timer already prevents log flooding, making additional rate limiting redundant 4. The blackhole sink is used for debugging/testing, where predictable output is essential This fix adds `internal_log_rate_limit = false` to both info! calls, similar to how the console sink disables rate limiting for its critical operational messages. Fixes #24188 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]> * chore: add changelog fragment for blackhole sink rate limiting fix --------- Co-authored-by: Claude <[email protected]> * chore(internal logs): Disable rate limiting for critical internal error logs (#24192) * Improve debug log in aws_ecs_metrics * Add internal_log_rate_limit = false to config reload errors * Disable rate limiting for lua build failure * Disable rate limiting for amqp build failure * Add internal_log_rate_limit = false to important failures during reload * Disable log rate limit for repeated events in process.rs * Update src/config/watcher.rs * Fix message format * fix(tracing): prevent panic for traces without standard fields (#24191) * fix(tracing): prevent panic for traces without std fields * forbid unwrap in this lib * clippy fix * improve events_with_custom_fields_no_message_dont_panic, advance to next window * chore(tracing): do not rate limit utlization report (#24202) * chore(internal metrics): move config_reload_* metrics to VectorReload* (#24203) * chore(internal metrics): move config_reload_* metrics to VectorReloaded and VectorReloadedError * update topology_doesnt_reload_new_data_dir test * chore(dev): cargo fmt * strengthen tests, since now we have a better interface * chore(releasing): Add 0.51.0 known issues (#24211) * Format fixes * Add 0.51.0 known issues * Add dots * Reword log panic known issue * Reword VRL missing fns * Backtick versions * Update website/cue/reference/releases/0.51.0.cue Co-authored-by: Pavlos Rontidis <[email protected]> * Fix cue docs fmt --------- Co-authored-by: Pavlos Rontidis <[email protected]> * Bump vector version to 0.51.1 * Bump VRL to 0.28.1 * Generate 0.51.1 cue * Add vrl_changelog * Remove whitespace * chore(releasing): Updated distribution/install.sh vector version to 0.51.1 * chore(releasing): Add 0.51.1 to versions.cue * chore(releasing): Created release md file * Add description * Reorder items and fix format * Finally fix styling * Bump date --------- Co-authored-by: Pavlos Rontidis <[email protected]> Co-authored-by: Claude <[email protected]> chore(releasing): pull in `internal_logs` fix into 0.51.1 (#24225) * fix(internal_logs source): remove rate limit (#24218) * fix(internal_logs source): remove rate limit * add changelog * Debug commit * Fix validated - Revert "Debug commit" This reverts commit c7b9ec9. * add unit test * fix check-events * Pull in internal_logs source fix * Add internal_logs known issue * Bump date * Update website/cue/reference/releases/0.51.0.cue Co-authored-by: Pavlos Rontidis <[email protected]> --------- Co-authored-by: Pavlos Rontidis <[email protected]>
1 parent f8d6250 commit 44c8f1c

File tree

206 files changed

+1115
-759
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

206 files changed

+1115
-759
lines changed

.github/workflows/changes.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ jobs:
324324

325325
# creates a yaml file that contains the filters for each integration,
326326
# extracted from the output of the `vdev int ci-paths` command, which
327-
# sources the paths from the scripts/integration/.../test.yaml files
327+
# sources the paths from the tests/integration/.../config/test.yaml files
328328
- name: Create filter rules for integrations
329329
run: vdev int ci-paths > int_test_filters.yaml
330330

.github/workflows/publish.yml

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -835,15 +835,3 @@ jobs:
835835
with:
836836
name: vector-${{ env.VECTOR_VERSION }}-SHA256SUMS
837837
path: target/artifacts/vector-${{ env.VECTOR_VERSION }}-SHA256SUMS
838-
839-
publish-homebrew:
840-
name: Publish to Homebrew
841-
# We only publish versioned releases to Homebrew.
842-
if: ${{ inputs.channel == 'release' }}
843-
uses: ./.github/workflows/publish-homebrew.yml
844-
needs:
845-
- generate-publish-metadata
846-
- publish-s3
847-
with:
848-
git_ref: ${{ inputs.git_ref }}
849-
vector_version: ${{ needs.generate-publish-metadata.outputs.vector_version }}

Cargo.lock

Lines changed: 8 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "vector"
3-
version = "0.51.0"
3+
version = "0.51.1"
44
authors = ["Vector Contributors <[email protected]>"]
55
edition = "2024"
66
description = "A lightweight and ultra-fast tool for building observability pipelines"
@@ -198,7 +198,7 @@ vector-config = { path = "lib/vector-config" }
198198
vector-config-common = { path = "lib/vector-config-common" }
199199
vector-config-macros = { path = "lib/vector-config-macros" }
200200
vector-lib = { path = "lib/vector-lib", default-features = false, features = ["vrl"] }
201-
vrl = { git = "https://github.com/vectordotdev/vrl.git", branch = "main", features = ["arbitrary", "cli", "test", "test_framework"] }
201+
vrl = { version = "0.28.1", features = ["arbitrary", "cli", "test", "test_framework"] }
202202
mock_instant = { version = "0.6" }
203203
serial_test = { version = "3.2" }
204204

clippy.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
large-error-threshold = 256 # in bytes
2+
allow-unwrap-in-tests = true
23

34
# for `disallowed_method`:
45
# https://rust-lang.github.io/rust-clippy/master/index.html#disallowed_method

distribution/install.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ set -u
1313
# If PACKAGE_ROOT is unset or empty, default it.
1414
PACKAGE_ROOT="${PACKAGE_ROOT:-"https://packages.timber.io/vector"}"
1515
# If VECTOR_VERSION is unset or empty, default it.
16-
VECTOR_VERSION="${VECTOR_VERSION:-"0.51.0"}"
16+
VECTOR_VERSION="${VECTOR_VERSION:-"0.51.1"}"
1717
_divider="--------------------------------------------------------------------------------"
1818
_prompt=">>>"
1919
_indent=" "

lib/tracing-limit/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ edition = "2024"
66
publish = false
77
license = "MPL-2.0"
88

9+
[lints.clippy]
10+
unwrap-used = "forbid"
11+
912
[dependencies]
1013
tracing-core = { version = "0.1", default-features = false }
1114
tracing-subscriber = { workspace = true, features = ["registry", "std"] }

lib/tracing-limit/benches/limit.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,17 @@ where
114114
}
115115

116116
fn on_new_span(&self, span: &span::Attributes<'_>, _id: &span::Id, _ctx: Context<'_, S>) {
117-
let mut visitor = Visitor(self.mutex.lock().unwrap());
117+
let mut visitor = Visitor(self.mutex.lock().expect("mutex should not be poisoned"));
118118
span.record(&mut visitor);
119119
}
120120

121121
fn on_record(&self, _id: &span::Id, values: &span::Record<'_>, _ctx: Context<'_, S>) {
122-
let mut visitor = Visitor(self.mutex.lock().unwrap());
122+
let mut visitor = Visitor(self.mutex.lock().expect("mutex should not be poisoned"));
123123
values.record(&mut visitor);
124124
}
125125

126126
fn on_event(&self, event: &Event<'_>, _ctx: Context<'_, S>) {
127-
let mut visitor = Visitor(self.mutex.lock().unwrap());
127+
let mut visitor = Visitor(self.mutex.lock().expect("mutex should not be poisoned"));
128128
event.record(&mut visitor);
129129
}
130130

lib/tracing-limit/src/lib.rs

Lines changed: 45 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -377,15 +377,17 @@ where
377377
let valueset = fields.value_set(&values);
378378
let event = Event::new(metadata, &valueset);
379379
self.inner.on_event(&event, ctx.clone());
380-
} else {
381-
let values = [(
382-
&fields.field(RATE_LIMIT_FIELD).unwrap(),
383-
Some(&rate_limit as &dyn Value),
384-
)];
380+
} else if let Some(rate_limit_field) = fields.field(RATE_LIMIT_FIELD) {
381+
let values = [(&rate_limit_field, Some(&rate_limit as &dyn Value))];
385382

386383
let valueset = fields.value_set(&values);
387384
let event = Event::new(metadata, &valueset);
388385
self.inner.on_event(&event, ctx.clone());
386+
} else {
387+
// If the event metadata has neither a "message" nor "internal_log_rate_limit" field,
388+
// we cannot create a proper synthetic event. This can happen with custom debug events
389+
// that have their own field structure. In this case, we simply skip emitting the
390+
// rate limit notification rather than panicking.
389391
}
390392
}
391393
}
@@ -1012,4 +1014,42 @@ mod test {
10121014
]
10131015
);
10141016
}
1017+
1018+
#[test]
1019+
#[serial]
1020+
fn events_with_custom_fields_no_message_dont_panic() {
1021+
// Verify events without "message" or "internal_log_rate_limit" fields don't panic
1022+
// when rate limiting skips suppression notifications.
1023+
let (events, sub) = setup_test(1);
1024+
tracing::subscriber::with_default(sub, || {
1025+
// Use closure to ensure all events share the same callsite
1026+
let emit_event = || {
1027+
debug!(component_id = "test_component", utilization = 0.85);
1028+
};
1029+
1030+
// First window: emit 5 events, only the first one should be logged
1031+
for _ in 0..5 {
1032+
emit_event();
1033+
MockClock::advance(Duration::from_millis(100));
1034+
}
1035+
1036+
// Advance to the next window
1037+
MockClock::advance(Duration::from_millis(1000));
1038+
1039+
// Second window: this event should be logged
1040+
emit_event();
1041+
});
1042+
1043+
let events = events.lock().unwrap();
1044+
1045+
// First event from window 1, first event from window 2
1046+
// Suppression notifications are skipped (no message field)
1047+
assert_eq!(
1048+
*events,
1049+
vec![
1050+
event!("", component_id: "test_component", utilization: "0.85"),
1051+
event!("", component_id: "test_component", utilization: "0.85"),
1052+
]
1053+
);
1054+
}
10151055
}

src/config/watcher.rs

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -147,19 +147,38 @@ pub fn spawn_thread<'a>(
147147
.all(|(_, t)| *t == ComponentType::EnrichmentTable)
148148
{
149149
info!("Only enrichment tables have changed.");
150-
_ = signal_tx.send(crate::signal::SignalTo::ReloadEnrichmentTables).map_err(|error| {
151-
error!(message = "Unable to reload enrichment tables.", cause = %error)
152-
});
150+
_ = signal_tx
151+
.send(crate::signal::SignalTo::ReloadEnrichmentTables)
152+
.map_err(|error| {
153+
error!(
154+
message = "Unable to reload enrichment tables.",
155+
cause = %error,
156+
internal_log_rate_limit = false,
157+
)
158+
});
153159
} else {
154-
_ = signal_tx.send(crate::signal::SignalTo::ReloadComponents(changed_components.into_keys().collect())).map_err(|error| {
155-
error!(message = "Unable to reload component configuration. Restart Vector to reload it.", cause = %error)
156-
});
160+
_ = signal_tx
161+
.send(crate::signal::SignalTo::ReloadComponents(
162+
changed_components.into_keys().collect(),
163+
))
164+
.map_err(|error| {
165+
error!(
166+
message = "Unable to reload component configuration. Restart Vector to reload it.",
167+
cause = %error,
168+
internal_log_rate_limit = false,
169+
)
170+
});
157171
}
158172
} else {
159-
_ = signal_tx.send(crate::signal::SignalTo::ReloadFromDisk)
160-
.map_err(|error| {
161-
error!(message = "Unable to reload configuration file. Restart Vector to reload it.", cause = %error)
162-
});
173+
_ = signal_tx
174+
.send(crate::signal::SignalTo::ReloadFromDisk)
175+
.map_err(|error| {
176+
error!(
177+
message = "Unable to reload configuration file. Restart Vector to reload it.",
178+
cause = %error,
179+
internal_log_rate_limit = false,
180+
)
181+
});
163182
}
164183
} else {
165184
debug!(message = "Ignoring event.", event = ?event)

0 commit comments

Comments
 (0)