Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(config): pre-flight work for initial integration of configuration schema for sinks #13516

Merged
merged 17 commits into from
Jul 18, 2022

Conversation

tobz
Copy link
Contributor

@tobz tobz commented Jul 12, 2022

(part of the work required for #12223)

This PR is the pre-flight work for initial implementation of the configuration schema framework, specifically for sinks.

It does not change how we load configurations, or anything about our use of inventory/typetag/SourceOuter/etc. That work will be the final step after all components have been minimally instrumented/converted to support having their configuration schema generated.

Reviewer Notes

Changes to Configurable

The main change in this PR is the dropping of most bounds, and the lifetime parameter, on Configurable. In the course of starting to apply #[configurable_component] to sink-related types, I hit many issues with types that had their own implementations of Deserialize/Serialize, as well as generic type parameters. This was due to the tight bounds present on the Configurable trait itself, which necessitated an infectious approach to propagating constraints like where T: Configurable to type definitions themselves, which then must be propagated to all other usages i.e. adding the bounds to unrelated trait implementations.

As well as removing these bounds and lifetime parameters, we've moved most of the bounds to the generated Configurable implementation itself, which lets us shift the burden of types needing to be Configurable throughout from the declaration site to the various callsites themselves. We've additionally added the capability to avoid automatically deriving the serde traits, as many of our configuration helper types have custom (de)serialization logic.

Changes to Compression

This is sort of an inconsequential change, but represents a big chunk of changed lines. Essentially, related to the above, where we had to do a bunch of rigamarole to get Compression into a state where we could successfully derive Configurable.

@netlify
Copy link

netlify bot commented Jul 12, 2022

Deploy Preview for vector-project canceled.

Name Link
🔨 Latest commit 3b5d1f4
🔍 Latest deploy log https://app.netlify.com/sites/vector-project/deploys/62d5820066c42b00095391b1

@tobz tobz changed the title Tobz/config schema initial integration sinks Tobz/config schema initial integration sinks (WIP) Jul 12, 2022
@tobz tobz marked this pull request as draft July 12, 2022 13:17
@github-actions github-actions bot added domain: sinks Anything related to the Vector's sinks domain: sources Anything related to the Vector's sources labels Jul 12, 2022
@github-actions
Copy link

Soak Test Results

Baseline: 329c410
Comparison: dd862e3
Total Vector CPUs: 4

Explanation

A soak test is an integrated performance test for vector in a repeatable rig, with varying configuration for vector. What follows is a statistical summary of a brief vector run for each configuration across SHAs given above. The goal of these tests are to determine, quickly, if vector performance is changed and to what degree by a pull request. Where appropriate units are scaled per-core.

The table below, if present, lists those experiments that have experienced a statistically significant change in their throughput performance between baseline and comparision SHAs, with 90.0% confidence OR have been detected as newly erratic. Negative values mean that baseline is faster, positive comparison. Results that do not exhibit more than a ±8.87% change in mean throughput are discarded. An experiment is erratic if its coefficient of variation is greater than 0.3. The abbreviated table will be omitted if no interesting changes are observed.

No interesting changes in throughput with confidence ≥ 90.00% and absolute Δ mean >= ±8.87%:

Fine details of change detection per experiment.
experiment Δ mean Δ mean % confidence baseline mean baseline stdev baseline stderr baseline outlier % baseline CoV comparison mean comparison stdev comparison stderr comparison outlier % comparison CoV erratic declared erratic
datadog_agent_remap_blackhole 4.07MiB 6.41 100.00% 63.48MiB 4.45MiB 92.68KiB 0 0.0700914 67.55MiB 2.91MiB 60.83KiB 0 0.043137 False False
http_text_to_http_json 1.68MiB 4.4 100.00% 38.31MiB 1.17MiB 24.35KiB 0 0.0304091 39.99MiB 1006.7KiB 20.56KiB 0 0.0245776 False False
datadog_agent_remap_blackhole_acks 2.54MiB 3.98 100.00% 63.68MiB 4.32MiB 90.1KiB 0 0.0678977 66.22MiB 3.36MiB 70.35KiB 0 0.0507796 False False
splunk_hec_route_s3 342.51KiB 1.79 100.00% 18.69MiB 2.4MiB 49.85KiB 0 0.128116 19.02MiB 2.34MiB 48.86KiB 0 0.122772 False False
syslog_regex_logs2metric_ddmetrics 178.66KiB 1.38 100.00% 12.68MiB 804.85KiB 16.39KiB 0 0.0619538 12.86MiB 711.78KiB 14.51KiB 0 0.0540462 False False
datadog_agent_remap_datadog_logs_acks 859.01KiB 1.36 100.00% 61.46MiB 3.58MiB 74.73KiB 0 0.0581833 62.3MiB 4.7MiB 97.8KiB 0 0.0754018 False False
datadog_agent_remap_datadog_logs 845.68KiB 1.3 100.00% 63.34MiB 820.95KiB 16.81KiB 0 0.0126538 64.17MiB 4.35MiB 90.61KiB 0 0.0677913 False False
http_pipelines_blackhole_acks 8.92KiB 0.74 99.78% 1.18MiB 107.47KiB 2.19KiB 0 0.0885778 1.19MiB 94.15KiB 1.92KiB 0 0.0770332 False False
socket_to_socket_blackhole 40.57KiB 0.3 100.00% 13.37MiB 159.22KiB 3.25KiB 0 0.011629 13.41MiB 235.36KiB 4.81KiB 0 0.0171393 False False
syslog_loki 33.73KiB 0.22 85.60% 14.94MiB 710.36KiB 14.54KiB 0 0.046435 14.97MiB 881.83KiB 17.93KiB 0 0.0575169 False False
splunk_hec_to_splunk_hec_logs_noack 21.63KiB 0.09 92.05% 23.82MiB 507.16KiB 10.35KiB 0 0.0207914 23.84MiB 327.95KiB 6.7KiB 0 0.0134324 False False
syslog_splunk_hec_logs 9.66KiB 0.06 25.03% 17.13MiB 1.07MiB 22.3KiB 0 0.0624698 17.14MiB 1005.67KiB 20.5KiB 0 0.057281 False False
splunk_hec_to_splunk_hec_logs_acks -413.43B -0 1.29% 23.75MiB 864.92KiB 17.59KiB 0 0.0355538 23.75MiB 864.94KiB 17.59KiB 0 0.0355556 False False
splunk_hec_indexer_ack_blackhole -2.85KiB -0.01 8.92% 23.75MiB 859.0KiB 17.47KiB 0 0.0353069 23.75MiB 910.14KiB 18.52KiB 0 0.0374134 False False
file_to_blackhole -42.38KiB -0.04 29.40% 95.34MiB 3.67MiB 75.99KiB 0 0.0384443 95.29MiB 3.97MiB 82.74KiB 0 0.0417004 False False
http_to_http_json -37.73KiB -0.15 99.66% 23.84MiB 358.28KiB 7.31KiB 0 0.0146706 23.81MiB 519.73KiB 10.6KiB 0 0.0213144 False False
syslog_humio_logs -25.26KiB -0.15 80.49% 16.9MiB 689.27KiB 14.07KiB 0 0.0398143 16.88MiB 658.93KiB 13.49KiB 0 0.0381172 False False
fluent_elasticsearch -150.29KiB -0.18 100.00% 79.47MiB 51.44KiB 1.04KiB 0 0.000631999 79.33MiB 1.34MiB 27.49KiB 0 0.0168352 False False
http_pipelines_blackhole -9.18KiB -0.55 100.00% 1.63MiB 11.07KiB 231.6B 0 0.00664452 1.62MiB 89.86KiB 1.83KiB 0 0.0542529 False False
http_to_http_noack -136.73KiB -0.56 100.00% 23.85MiB 249.45KiB 5.1KiB 0 0.0102142 23.71MiB 1.24MiB 25.92KiB 0 0.0524669 False False
syslog_log2metric_humio_metrics -104.67KiB -0.8 100.00% 12.77MiB 715.11KiB 14.61KiB 0 0.0546886 12.66MiB 801.21KiB 16.31KiB 0 0.0617679 False False
http_pipelines_no_grok_blackhole -113.14KiB -0.98 100.00% 11.33MiB 75.76KiB 1.55KiB 0 0.00652981 11.22MiB 1015.34KiB 20.66KiB 0 0.0883733 False False
syslog_log2metric_splunk_hec_metrics -405.54KiB -2.17 100.00% 18.23MiB 1.13MiB 23.66KiB 0 0.0621452 17.83MiB 1.21MiB 25.24KiB 0 0.0678515 False False
http_to_http_acks -626.02KiB -3.34 99.25% 18.29MiB 8.07MiB 168.65KiB 0 0.44089 17.68MiB 7.76MiB 162.01KiB 0 0.43883 True True

@tobz tobz changed the title Tobz/config schema initial integration sinks (WIP) chore(config): pre-flight work for initial integration of configuration schema for sinks Jul 13, 2022
Signed-off-by: Toby Lawrence <[email protected]>
@tobz tobz marked this pull request as ready for review July 13, 2022 16:09
Copy link
Contributor

@spencergilbert spencergilbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like I generally understood the changes (though doubt I could have implemented/written them). Left a few comments and thoughts, definitely would want a review of someone more familiar with the encoders and with macros.

lib/codecs/src/encoding/mod.rs Show resolved Hide resolved
lib/codecs/src/encoding/mod.rs Outdated Show resolved Hide resolved
lib/vector-config-macros/src/configurable.rs Outdated Show resolved Hide resolved
lib/vector-config-macros/src/configurable.rs Show resolved Hide resolved
src/sinks/aws_cloudwatch_logs/config.rs Show resolved Hide resolved
src/sinks/util/buffer/compression.rs Show resolved Hide resolved
src/sinks/util/encoding/adapter.rs Outdated Show resolved Hide resolved
src/sinks/util/encoding/macros.rs Outdated Show resolved Hide resolved
src/sinks/util/service.rs Outdated Show resolved Hide resolved
src/sinks/util/service/concurrency.rs Outdated Show resolved Hide resolved
@github-actions
Copy link

Soak Test Results

Baseline: 176060c
Comparison: a44ad81
Total Vector CPUs: 4

Explanation

A soak test is an integrated performance test for vector in a repeatable rig, with varying configuration for vector. What follows is a statistical summary of a brief vector run for each configuration across SHAs given above. The goal of these tests are to determine, quickly, if vector performance is changed and to what degree by a pull request. Where appropriate units are scaled per-core.

The table below, if present, lists those experiments that have experienced a statistically significant change in their throughput performance between baseline and comparision SHAs, with 90.0% confidence OR have been detected as newly erratic. Negative values mean that baseline is faster, positive comparison. Results that do not exhibit more than a ±8.87% change in mean throughput are discarded. An experiment is erratic if its coefficient of variation is greater than 0.3. The abbreviated table will be omitted if no interesting changes are observed.

No interesting changes in throughput with confidence ≥ 90.00% and absolute Δ mean >= ±8.87%:

Fine details of change detection per experiment.
experiment Δ mean Δ mean % confidence baseline mean baseline stdev baseline stderr baseline outlier % baseline CoV comparison mean comparison stdev comparison stderr comparison outlier % comparison CoV erratic declared erratic
datadog_agent_remap_blackhole_acks 4.53MiB 7.36 100.00% 61.55MiB 5.54MiB 115.32KiB 0 0.0899709 66.08MiB 4.56MiB 95.57KiB 0 0.0690455 False False
datadog_agent_remap_blackhole 3.76MiB 6.05 100.00% 62.07MiB 5.16MiB 107.57KiB 0 0.0831768 65.82MiB 3.95MiB 82.38KiB 0 0.0599904 False False
http_text_to_http_json 1.57MiB 4.14 100.00% 38.07MiB 1.05MiB 21.89KiB 0 0.0274991 39.64MiB 1.02MiB 21.27KiB 0 0.0256607 False False
http_to_http_acks 546.58KiB 2.98 98.06% 17.89MiB 8.27MiB 172.84KiB 0 0.462097 18.42MiB 7.53MiB 157.35KiB 0 0.408825 True True
datadog_agent_remap_datadog_logs_acks 1.29MiB 2.07 100.00% 62.12MiB 3.99MiB 83.33KiB 0 0.064137 63.41MiB 5.07MiB 105.62KiB 0 0.0799708 False False
splunk_hec_route_s3 379.78KiB 1.94 100.00% 19.11MiB 2.25MiB 46.83KiB 0 0.117706 19.48MiB 2.11MiB 44.04KiB 0 0.108116 False False
socket_to_socket_blackhole 119.88KiB 0.86 100.00% 13.69MiB 157.35KiB 3.21KiB 0 0.011223 13.81MiB 115.28KiB 2.35KiB 0 0.0081529 False False
syslog_splunk_hec_logs 152.35KiB 0.85 100.00% 17.54MiB 757.23KiB 15.42KiB 0 0.0421455 17.69MiB 688.61KiB 14.04KiB 0 0.0380036 False False
datadog_agent_remap_datadog_logs 497.86KiB 0.79 99.98% 61.48MiB 3.21MiB 67.23KiB 0 0.052127 61.97MiB 5.54MiB 115.27KiB 0 0.089322 False False
http_pipelines_blackhole_acks 8.93KiB 0.74 99.95% 1.18MiB 100.62KiB 2.05KiB 0 0.0833471 1.19MiB 75.39KiB 1.54KiB 0 0.0619902 False False
syslog_regex_logs2metric_ddmetrics 63.8KiB 0.48 99.96% 13.01MiB 598.84KiB 12.21KiB 0 0.04494 13.07MiB 638.81KiB 13.02KiB 0 0.0477115 False False
syslog_humio_logs 81.43KiB 0.46 100.00% 17.19MiB 365.32KiB 7.46KiB 0 0.0207533 17.27MiB 392.39KiB 8.04KiB 0 0.0221887 False False
splunk_hec_to_splunk_hec_logs_acks 14.65KiB 0.06 47.49% 23.76MiB 827.01KiB 16.83KiB 0 0.033991 23.77MiB 774.32KiB 15.76KiB 0 0.0318064 False False
splunk_hec_to_splunk_hec_logs_noack 10.93KiB 0.04 67.93% 23.83MiB 427.74KiB 8.73KiB 0 0.0175278 23.84MiB 328.3KiB 6.7KiB 0 0.0134471 False False
syslog_log2metric_splunk_hec_metrics 4.08KiB 0.02 12.80% 18.72MiB 757.19KiB 15.43KiB 0 0.0394823 18.73MiB 986.86KiB 20.08KiB 0 0.051447 False False
splunk_hec_indexer_ack_blackhole -9.55KiB -0.04 26.84% 23.74MiB 941.99KiB 19.15KiB 0 0.0387443 23.73MiB 994.89KiB 20.22KiB 0 0.0409364 False False
file_to_blackhole -60.0KiB -0.06 46.34% 95.34MiB 3.16MiB 65.49KiB 0 0.0331264 95.29MiB 3.45MiB 71.69KiB 0 0.0361736 False False
http_to_http_json -27.17KiB -0.11 97.78% 23.85MiB 329.96KiB 6.74KiB 0 0.0135092 23.82MiB 478.6KiB 9.79KiB 0 0.019617 False False
fluent_elasticsearch -316.36KiB -0.39 100.00% 79.47MiB 53.03KiB 1.07KiB 0 0.000651517 79.16MiB 3.22MiB 66.19KiB 0 0.040653 False False
http_to_http_noack -113.6KiB -0.47 100.00% 23.84MiB 408.08KiB 8.34KiB 0 0.0167148 23.73MiB 1.19MiB 24.71KiB 0 0.0499579 False False
syslog_loki -79.04KiB -0.54 100.00% 14.38MiB 517.19KiB 10.57KiB 0 0.0351156 14.3MiB 742.63KiB 15.1KiB 0 0.0506942 False False
http_pipelines_no_grok_blackhole -73.35KiB -0.63 99.64% 11.38MiB 379.12KiB 7.74KiB 0 0.0325333 11.31MiB 1.15MiB 23.99KiB 0 0.101934 False False
syslog_log2metric_humio_metrics -116.39KiB -0.89 100.00% 12.77MiB 287.84KiB 5.87KiB 0 0.0219996 12.66MiB 534.38KiB 10.88KiB 0 0.0412098 False False
http_pipelines_blackhole -29.89KiB -1.8 100.00% 1.62MiB 20.79KiB 435.02B 0 0.0125109 1.59MiB 134.85KiB 2.75KiB 0 0.0826202 False False

Signed-off-by: Toby Lawrence <[email protected]>
Copy link
Contributor

@spencergilbert spencergilbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely feels like magic to me still, but it's well documented, organized, and explained. Appreciate the thought and work that's gone into all these PRs.

@github-actions
Copy link

Soak Test Results

Baseline: 176060c
Comparison: 5cb4226
Total Vector CPUs: 4

Explanation

A soak test is an integrated performance test for vector in a repeatable rig, with varying configuration for vector. What follows is a statistical summary of a brief vector run for each configuration across SHAs given above. The goal of these tests are to determine, quickly, if vector performance is changed and to what degree by a pull request. Where appropriate units are scaled per-core.

The table below, if present, lists those experiments that have experienced a statistically significant change in their throughput performance between baseline and comparision SHAs, with 90.0% confidence OR have been detected as newly erratic. Negative values mean that baseline is faster, positive comparison. Results that do not exhibit more than a ±8.87% change in mean throughput are discarded. An experiment is erratic if its coefficient of variation is greater than 0.3. The abbreviated table will be omitted if no interesting changes are observed.

Changes in throughput with confidence ≥ 90.00% and absolute Δ mean >= ±8.87%:

experiment Δ mean Δ mean % confidence
datadog_agent_remap_blackhole_acks 5.99MiB 9.72 100.00%
Fine details of change detection per experiment.
experiment Δ mean Δ mean % confidence baseline mean baseline stdev baseline stderr baseline outlier % baseline CoV comparison mean comparison stdev comparison stderr comparison outlier % comparison CoV erratic declared erratic
datadog_agent_remap_blackhole_acks 5.99MiB 9.72 100.00% 61.58MiB 4.91MiB 102.31KiB 0 0.0797191 67.56MiB 2.82MiB 58.98KiB 0 0.0416936 False False
datadog_agent_remap_blackhole 3.85MiB 6.17 100.00% 62.41MiB 5.14MiB 107.08KiB 0 0.0823501 66.27MiB 3.63MiB 75.71KiB 0 0.0547396 False False
http_text_to_http_json 1.35MiB 3.52 100.00% 38.54MiB 961.16KiB 19.62KiB 0 0.024349 39.9MiB 1019.48KiB 20.81KiB 0 0.0249495 False False
splunk_hec_route_s3 398.67KiB 2.04 100.00% 19.11MiB 2.32MiB 48.27KiB 0 0.121285 19.5MiB 2.15MiB 44.96KiB 0 0.110213 False False
syslog_regex_logs2metric_ddmetrics 139.38KiB 1.05 100.00% 12.99MiB 696.64KiB 14.19KiB 0 0.0523581 13.13MiB 567.62KiB 11.58KiB 0 0.0422189 False False
syslog_loki 148.71KiB 1 100.00% 14.54MiB 803.1KiB 16.43KiB 0 0.0539288 14.69MiB 998.87KiB 20.3KiB 0 0.0664115 False False
syslog_humio_logs 170.7KiB 0.95 100.00% 17.63MiB 266.7KiB 5.44KiB 0 0.0147673 17.8MiB 177.14KiB 3.63KiB 0 0.00971638 False False
datadog_agent_remap_datadog_logs 381.38KiB 0.59 99.99% 62.6MiB 1.48MiB 31.01KiB 0 0.0236278 62.97MiB 4.57MiB 95.17KiB 0 0.072559 False False
http_to_http_acks 109.26KiB 0.58 36.92% 18.27MiB 7.57MiB 158.34KiB 0 0.414389 18.38MiB 7.81MiB 163.08KiB 0 0.42509 True True
datadog_agent_remap_datadog_logs_acks 363.09KiB 0.57 99.52% 62.67MiB 3.55MiB 74.28KiB 0 0.0566405 63.03MiB 5.04MiB 104.91KiB 0 0.0799478 False False
syslog_splunk_hec_logs 47.73KiB 0.27 98.32% 17.53MiB 773.4KiB 15.74KiB 0 0.0430728 17.58MiB 601.29KiB 12.27KiB 0 0.0333986 False False
http_pipelines_blackhole_acks 2.7KiB 0.23 68.93% 1.16MiB 102.92KiB 2.1KiB 0 0.0863524 1.17MiB 80.95KiB 1.65KiB 0 0.0677649 False False
syslog_log2metric_splunk_hec_metrics 18.21KiB 0.09 60.85% 18.88MiB 575.08KiB 11.73KiB 0 0.0297353 18.9MiB 870.92KiB 17.72KiB 0 0.0449896 False False
splunk_hec_to_splunk_hec_logs_noack 21.52KiB 0.09 91.85% 23.82MiB 505.82KiB 10.33KiB 0 0.0207367 23.84MiB 331.77KiB 6.77KiB 0 0.0135892 False False
splunk_hec_to_splunk_hec_logs_acks 12.29KiB 0.05 37.35% 23.74MiB 902.3KiB 18.35KiB 0 0.0371128 23.75MiB 853.6KiB 17.36KiB 0 0.0350919 False False
splunk_hec_indexer_ack_blackhole 10.27KiB 0.04 30.56% 23.75MiB 925.58KiB 18.83KiB 0 0.0380552 23.76MiB 891.05KiB 18.13KiB 0 0.0366201 False False
socket_to_socket_blackhole 3.92KiB 0.03 35.69% 13.53MiB 292.71KiB 5.97KiB 0 0.0211265 13.53MiB 293.34KiB 5.99KiB 0 0.0211659 False False
file_to_blackhole -32.4KiB -0.03 27.14% 95.33MiB 3.08MiB 63.79KiB 0 0.0322948 95.3MiB 3.28MiB 68.2KiB 0 0.0344015 False False
http_to_http_json -37.5KiB -0.15 99.54% 23.84MiB 346.4KiB 7.07KiB 0 0.0141845 23.81MiB 547.61KiB 11.18KiB 0 0.0224584 False False
http_to_http_noack -49.68KiB -0.2 98.88% 23.84MiB 399.62KiB 8.16KiB 0 0.0163691 23.79MiB 873.34KiB 17.8KiB 0 0.0358461 False False
http_pipelines_blackhole -6.44KiB -0.39 99.55% 1.62MiB 35.98KiB 752.73B 0 0.0216387 1.62MiB 104.95KiB 2.14KiB 0 0.0633575 False False
fluent_elasticsearch -366.34KiB -0.45 100.00% 79.47MiB 55.47KiB 1.12KiB 0 0.000681503 79.12MiB 4.17MiB 85.74KiB 0 0.0527338 False False
http_pipelines_no_grok_blackhole -69.34KiB -0.61 99.73% 11.17MiB 389.38KiB 7.95KiB 0 0.0340258 11.11MiB 1.04MiB 21.7KiB 0 0.093774 False False
syslog_log2metric_humio_metrics -101.26KiB -0.74 100.00% 13.35MiB 257.23KiB 5.25KiB 0 0.0188134 13.25MiB 482.15KiB 9.82KiB 0 0.0355268 False False

@github-actions github-actions bot added the domain: codecs Anything related to Vector's codecs (encoding/decoding) label Jul 14, 2022
Comment on lines -47 to +48
T::metadata().map_default_value(|default| Some(default))
T::metadata().convert()
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I changed this because what this was doing was always setting a default value for an optional field based on the default value of its contained T.

That isn't what the default of an Option<T> would be if you just did Default::default(), so the previous code was not correct in that case. Callers can still specify a default for an optional field at the field-level if need be, but we shouldn't add one by default via T.

Comment on lines +52 to +53
let mut inner_metadata = T::metadata();
inner_metadata.set_transparent();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The rules are slightly complex, but the process of generating the schema for a given type happens in two parts: generating the base level schema, and then applying the metadata which is where we set default values, validation, etc.

Similar to the comments above about not using the default value of T for Option<T>, we're handling the reverse case here. The previous code was taking the metadata for the Option<T> -- this will always be an actual field in a struct/enum -- which may have contained a default value, and then using that when generating the schema for T.

If someone has a Option<T> field with a default value, it doesn't make sense to generate the schema for T while saying the default value for it is whatever was on that optional field... because there might be 1 or 100 other fields that are also Option<T>, with different defaults, and now our schema is implying that T by itself always has a default of whatever the first Option<T> field we generated a schema for had for it's default value...

I feel like if I say Option<T> or "default value" one more time my brain is gonna explode, but I think you get the point here.

Copy link
Contributor

@spencergilbert spencergilbert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This added configurable to some sinks, but not all - that's coming in future work still?

@github-actions
Copy link

Soak Test Results

Baseline: ab1d123
Comparison: 8549dd9
Total Vector CPUs: 4

Explanation

A soak test is an integrated performance test for vector in a repeatable rig, with varying configuration for vector. What follows is a statistical summary of a brief vector run for each configuration across SHAs given above. The goal of these tests are to determine, quickly, if vector performance is changed and to what degree by a pull request. Where appropriate units are scaled per-core.

The table below, if present, lists those experiments that have experienced a statistically significant change in their throughput performance between baseline and comparision SHAs, with 90.0% confidence OR have been detected as newly erratic. Negative values mean that baseline is faster, positive comparison. Results that do not exhibit more than a ±8.87% change in mean throughput are discarded. An experiment is erratic if its coefficient of variation is greater than 0.3. The abbreviated table will be omitted if no interesting changes are observed.

Changes in throughput with confidence ≥ 90.00% and absolute Δ mean >= ±8.87%:

experiment Δ mean Δ mean % confidence
datadog_agent_remap_blackhole_acks 9.33MiB 16.65 100.00%
Fine details of change detection per experiment.
experiment Δ mean Δ mean % confidence baseline mean baseline stdev baseline stderr baseline outlier % baseline CoV comparison mean comparison stdev comparison stderr comparison outlier % comparison CoV erratic declared erratic
datadog_agent_remap_blackhole_acks 9.33MiB 16.65 100.00% 56.04MiB 9.88MiB 205.85KiB 0 0.176243 65.37MiB 5.06MiB 105.81KiB 0 0.0773184 False False
http_text_to_http_json 1.23MiB 3.14 100.00% 39.06MiB 791.11KiB 16.15KiB 0 0.0197729 40.29MiB 974.53KiB 19.89KiB 0 0.0236159 False False
socket_to_socket_blackhole 371.52KiB 2.65 100.00% 13.69MiB 131.18KiB 2.68KiB 0 0.0093552 14.05MiB 110.65KiB 2.26KiB 0 0.0076875 False False
splunk_hec_route_s3 318.49KiB 1.62 100.00% 19.15MiB 2.26MiB 47.13KiB 0 0.118205 19.46MiB 2.12MiB 44.29KiB 0 0.108772 False False
syslog_loki 213.5KiB 1.43 100.00% 14.59MiB 596.67KiB 12.23KiB 0 0.0399193 14.8MiB 980.08KiB 19.92KiB 0 0.0646475 False False
datadog_agent_remap_blackhole 647.99KiB 0.98 100.00% 64.62MiB 4.22MiB 87.89KiB 0 0.065284 65.26MiB 3.62MiB 75.54KiB 0 0.0555038 False False
syslog_log2metric_humio_metrics 120.59KiB 0.91 100.00% 12.87MiB 395.92KiB 8.07KiB 0 0.0300296 12.99MiB 567.11KiB 11.54KiB 0 0.0426244 False False
syslog_splunk_hec_logs 121.87KiB 0.68 100.00% 17.53MiB 798.86KiB 16.26KiB 0 0.0444832 17.65MiB 658.13KiB 13.42KiB 0 0.0363996 False False
datadog_agent_remap_datadog_logs_acks 309.43KiB 0.51 95.64% 59.67MiB 4.77MiB 99.7KiB 0 0.0799207 59.97MiB 5.59MiB 116.4KiB 0 0.0932255 False False
datadog_agent_remap_datadog_logs 42.03KiB 0.06 37.69% 64.52MiB 303.23KiB 6.21KiB 0 0.00458871 64.56MiB 4.09MiB 85.3KiB 0 0.0634045 False False
http_pipelines_blackhole_acks 366.13B 0.03 4.91% 1.04MiB 202.92KiB 4.13KiB 0 0.189613 1.05MiB 200.0KiB 4.08KiB 0 0.186821 False False
splunk_hec_to_splunk_hec_logs_noack 1.66KiB 0.01 13.78% 23.84MiB 332.2KiB 6.79KiB 0 0.0136079 23.84MiB 328.35KiB 6.7KiB 0 0.013449 False False
file_to_blackhole -8.44KiB -0.01 6.14% 95.33MiB 3.72MiB 77.07KiB 0 0.0389978 95.33MiB 3.74MiB 77.9KiB 0 0.0392647 False False
splunk_hec_to_splunk_hec_logs_acks -5.73KiB -0.02 18.97% 23.76MiB 822.3KiB 16.73KiB 0 0.033793 23.75MiB 837.14KiB 17.03KiB 0 0.034411 False False
http_to_http_acks -5.81KiB -0.03 1.98% 18.07MiB 8.04MiB 168.13KiB 0 0.445026 18.06MiB 7.8MiB 162.77KiB 0 0.431966 True True
splunk_hec_indexer_ack_blackhole -16.37KiB -0.07 45.73% 23.75MiB 906.57KiB 18.44KiB 0 0.0372659 23.74MiB 962.6KiB 19.57KiB 0 0.0395958 False False
http_to_http_json -33.78KiB -0.14 99.09% 23.84MiB 348.96KiB 7.12KiB 0 0.0142899 23.81MiB 529.03KiB 10.8KiB 0 0.0216939 False False
http_pipelines_blackhole -5.58KiB -0.34 97.21% 1.59MiB 28.22KiB 590.55B 0 0.0172958 1.59MiB 121.16KiB 2.47KiB 0 0.0745217 False False
fluent_elasticsearch -353.04KiB -0.43 100.00% 79.47MiB 52.09KiB 1.05KiB 0 0.000639992 79.13MiB 3.65MiB 74.9KiB 0 0.0460629 False False
http_to_http_noack -113.99KiB -0.47 100.00% 23.84MiB 407.46KiB 8.33KiB 0 0.0166898 23.73MiB 1.19MiB 24.85KiB 0 0.0502521 False False
syslog_log2metric_splunk_hec_metrics -153.37KiB -0.78 100.00% 19.13MiB 541.08KiB 11.03KiB 0 0.02762 18.98MiB 928.94KiB 18.93KiB 0 0.0477932 False False
syslog_humio_logs -164.13KiB -0.92 100.00% 17.44MiB 382.04KiB 7.8KiB 0 0.0213934 17.28MiB 369.54KiB 7.57KiB 0 0.0208854 False False
syslog_regex_logs2metric_ddmetrics -146.55KiB -1.08 100.00% 13.19MiB 618.01KiB 12.6KiB 0 0.0457394 13.05MiB 592.91KiB 12.09KiB 0 0.0443631 False False
http_pipelines_no_grok_blackhole -234.04KiB -2.08 100.00% 10.99MiB 528.33KiB 10.78KiB 0 0.0469164 10.77MiB 1.17MiB 24.39KiB 0 0.10879 False False

Cargo.toml Outdated Show resolved Hide resolved
lib/codecs/src/encoding/mod.rs Outdated Show resolved Hide resolved
lib/codecs/src/encoding/mod.rs Outdated Show resolved Hide resolved
lib/vector-config/src/stdlib.rs Outdated Show resolved Hide resolved
src/sinks/aws_cloudwatch_logs/config.rs Outdated Show resolved Hide resolved
src/sinks/util/buffer/compression.rs Show resolved Hide resolved
src/sinks/util/buffer/compression.rs Show resolved Hide resolved
src/sinks/util/service.rs Outdated Show resolved Hide resolved
@tobz
Copy link
Contributor Author

tobz commented Jul 15, 2022

This added configurable to some sinks, but not all - that's coming in future work still?

@spencergilbert Right, I did it for a single sink to try and bring a bunch of the common configuration types -- encoding, acks, batch settings, etc -- to the surface in terms of instrumenting them and trying to find gaps in what Configurable supported vs what it needed to support for sinks.

@spencergilbert
Copy link
Contributor

@spencergilbert Right, I did it for a single sink to try and bring a bunch of the common configuration types -- encoding, acks, batch settings, etc -- to the surface in terms of instrumenting them and trying to find gaps in what Configurable supported vs what it needed to support for sinks.

Good good - just covering the obvious base of "oops I forgot to update 20+ sinks" 😆

Copy link
Contributor

@pablosichert pablosichert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Apart from the comments, this PR looks good! Nice work, excited to eventually see these comments end up on the website docs 😄

Signed-off-by: Toby Lawrence <[email protected]>
@tobz tobz enabled auto-merge (squash) July 15, 2022 14:56
@github-actions
Copy link

Soak Test Results

Baseline: e8f32c3
Comparison: 3718b2c
Total Vector CPUs: 4

Explanation

A soak test is an integrated performance test for vector in a repeatable rig, with varying configuration for vector. What follows is a statistical summary of a brief vector run for each configuration across SHAs given above. The goal of these tests are to determine, quickly, if vector performance is changed and to what degree by a pull request. Where appropriate units are scaled per-core.

The table below, if present, lists those experiments that have experienced a statistically significant change in their throughput performance between baseline and comparision SHAs, with 90.0% confidence OR have been detected as newly erratic. Negative values mean that baseline is faster, positive comparison. Results that do not exhibit more than a ±8.87% change in mean throughput are discarded. An experiment is erratic if its coefficient of variation is greater than 0.3. The abbreviated table will be omitted if no interesting changes are observed.

No interesting changes in throughput with confidence ≥ 90.00% and absolute Δ mean >= ±8.87%:

Fine details of change detection per experiment.
experiment Δ mean Δ mean % confidence baseline mean baseline stdev baseline stderr baseline outlier % baseline CoV comparison mean comparison stdev comparison stderr comparison outlier % comparison CoV erratic declared erratic
syslog_log2metric_humio_metrics 355.49KiB 2.69 100.00% 12.89MiB 437.17KiB 8.92KiB 0 0.0331199 13.23MiB 684.68KiB 13.94KiB 0 0.0505107 False False
http_pipelines_blackhole_acks 29.62KiB 2.45 100.00% 1.18MiB 101.9KiB 2.07KiB 0 0.0844207 1.21MiB 66.37KiB 1.35KiB 0 0.0536654 False False
syslog_log2metric_splunk_hec_metrics 363.18KiB 1.97 100.00% 17.99MiB 1015.66KiB 20.68KiB 0 0.0551369 18.34MiB 1.11MiB 23.21KiB 0 0.0606909 False False
datadog_agent_remap_blackhole_acks 987.37KiB 1.58 100.00% 60.96MiB 4.38MiB 91.17KiB 0 0.071804 61.92MiB 3.17MiB 66.31KiB 0 0.0512201 False False
syslog_splunk_hec_logs 235.08KiB 1.45 99.99% 15.8MiB 2.18MiB 45.38KiB 0 0.137802 16.03MiB 1.97MiB 41.2KiB 0 0.122945 False False
http_text_to_http_json 492.91KiB 1.24 100.00% 38.71MiB 807.82KiB 16.49KiB 0 0.0203738 39.19MiB 796.0KiB 16.25KiB 0 0.0198293 False False
datadog_agent_remap_blackhole 674.7KiB 1.06 100.00% 62.08MiB 4.38MiB 91.23KiB 0 0.0705478 62.74MiB 3.24MiB 67.58KiB 0 0.0516017 False False
datadog_agent_remap_datadog_logs_acks 339.15KiB 0.53 99.60% 62.6MiB 3.46MiB 72.29KiB 0 0.0552773 62.93MiB 4.47MiB 93.01KiB 0 0.0709833 False False
datadog_agent_remap_datadog_logs 155.03KiB 0.24 90.40% 62.76MiB 419.7KiB 8.6KiB 0 0.0065294 62.91MiB 4.45MiB 92.71KiB 0 0.0707812 False False
http_pipelines_blackhole 3.41KiB 0.2 90.26% 1.64MiB 15.91KiB 332.9B 0 0.00945879 1.65MiB 99.55KiB 2.03KiB 0 0.0590562 False False
http_to_http_acks 33.19KiB 0.18 10.90% 18.12MiB 8.14MiB 170.17KiB 0 0.449248 18.15MiB 8.24MiB 172.27KiB 0 0.453983 True True
splunk_hec_route_s3 30.08KiB 0.15 34.45% 18.98MiB 2.36MiB 49.15KiB 0 0.124356 19.01MiB 2.21MiB 46.15KiB 0 0.116039 False False
splunk_hec_indexer_ack_blackhole 25.05KiB 0.1 66.70% 23.74MiB 937.4KiB 19.06KiB 0 0.0385559 23.76MiB 859.86KiB 17.5KiB 0 0.03533 False False
splunk_hec_to_splunk_hec_logs_noack 7.67KiB 0.03 54.00% 23.83MiB 384.85KiB 7.86KiB 0 0.0157676 23.84MiB 331.75KiB 6.77KiB 0 0.0135877 False False
splunk_hec_to_splunk_hec_logs_acks 4.42KiB 0.02 14.39% 23.75MiB 854.24KiB 17.38KiB 0 0.0351167 23.75MiB 838.65KiB 17.06KiB 0 0.0344697 False False
file_to_blackhole -49.61KiB -0.05 36.00% 95.34MiB 3.14MiB 65.08KiB 0 0.0329228 95.29MiB 4.02MiB 83.75KiB 0 0.0422111 False False
syslog_humio_logs -14.94KiB -0.08 99.82% 17.6MiB 158.51KiB 3.24KiB 0 0.00879408 17.58MiB 172.6KiB 3.53KiB 0 0.0095835 False False
http_to_http_json -25.83KiB -0.11 95.62% 23.85MiB 339.71KiB 6.94KiB 0 0.0139093 23.82MiB 526.97KiB 10.77KiB 0 0.0215994 False False
fluent_elasticsearch -172.51KiB -0.21 99.99% 79.47MiB 53.21KiB 1.08KiB 0 0.000653715 79.31MiB 2.18MiB 44.85KiB 0 0.0274538 False False
http_to_http_noack -78.52KiB -0.32 99.94% 23.84MiB 404.77KiB 8.28KiB 0 0.0165797 23.76MiB 1.02MiB 21.23KiB 0 0.0428239 False False
http_pipelines_no_grok_blackhole -78.54KiB -0.68 99.99% 11.26MiB 237.38KiB 4.85KiB 0 0.0205751 11.19MiB 931.76KiB 18.97KiB 0 0.0813162 False False
socket_to_socket_blackhole -137.29KiB -1 100.00% 13.45MiB 339.29KiB 6.93KiB 0 0.024638 13.31MiB 322.34KiB 6.58KiB 0 0.0236424 False False
syslog_loki -176.41KiB -1.23 100.00% 14.05MiB 279.18KiB 5.72KiB 0 0.0194014 13.88MiB 681.45KiB 13.85KiB 0 0.0479444 False False
syslog_regex_logs2metric_ddmetrics -285.06KiB -2.22 100.00% 12.54MiB 864.76KiB 17.63KiB 0 0.0673216 12.26MiB 957.64KiB 19.51KiB 0 0.0762444 False False

@tobz tobz force-pushed the tobz/config-schema-initial-integration-sinks branch from 3718b2c to 9e0ce4d Compare July 18, 2022 14:51
@tobz tobz merged commit c640add into master Jul 18, 2022
@tobz tobz deleted the tobz/config-schema-initial-integration-sinks branch July 18, 2022 17:35
@github-actions
Copy link

Soak Test Results

Baseline: b5906e3
Comparison: 3b5d1f4
Total Vector CPUs: 4

Explanation

A soak test is an integrated performance test for vector in a repeatable rig, with varying configuration for vector. What follows is a statistical summary of a brief vector run for each configuration across SHAs given above. The goal of these tests are to determine, quickly, if vector performance is changed and to what degree by a pull request. Where appropriate units are scaled per-core.

The table below, if present, lists those experiments that have experienced a statistically significant change in their throughput performance between baseline and comparision SHAs, with 90.0% confidence OR have been detected as newly erratic. Negative values mean that baseline is faster, positive comparison. Results that do not exhibit more than a ±8.87% change in mean throughput are discarded. An experiment is erratic if its coefficient of variation is greater than 0.3. The abbreviated table will be omitted if no interesting changes are observed.

No interesting changes in throughput with confidence ≥ 90.00% and absolute Δ mean >= ±8.87%:

Fine details of change detection per experiment.
experiment Δ mean Δ mean % confidence baseline mean baseline stdev baseline stderr baseline outlier % baseline CoV comparison mean comparison stdev comparison stderr comparison outlier % comparison CoV erratic declared erratic
syslog_log2metric_splunk_hec_metrics 684.0KiB 3.76 100.00% 17.77MiB 1.13MiB 23.51KiB 0 0.0634378 18.44MiB 1.22MiB 25.47KiB 0 0.0662247 False False
http_pipelines_blackhole_acks 35.57KiB 3.05 100.00% 1.14MiB 122.89KiB 2.5KiB 0 0.10535 1.17MiB 84.18KiB 1.72KiB 0 0.0700256 False False
syslog_regex_logs2metric_ddmetrics 191.65KiB 1.48 100.00% 12.62MiB 668.39KiB 13.62KiB 0 0.0517117 12.81MiB 688.97KiB 14.04KiB 0 0.0525254 False False
datadog_agent_remap_blackhole_acks 585.53KiB 0.9 100.00% 63.65MiB 5.4MiB 112.46KiB 0 0.084818 64.22MiB 4.25MiB 88.85KiB 0 0.0660952 False False
syslog_log2metric_humio_metrics 88.34KiB 0.67 100.00% 12.87MiB 616.71KiB 12.6KiB 0 0.0467991 12.95MiB 669.9KiB 13.66KiB 0 0.050497 False False
http_to_http_acks 33.92KiB 0.18 12.18% 18.25MiB 7.32MiB 152.97KiB 0 0.400816 18.29MiB 7.67MiB 160.09KiB 0 0.419591 True True
datadog_agent_remap_blackhole 111.46KiB 0.17 68.07% 63.4MiB 3.92MiB 81.68KiB 0 0.0617833 63.51MiB 3.67MiB 76.49KiB 0 0.0577657 False False
splunk_hec_to_splunk_hec_logs_noack 25.84KiB 0.11 95.53% 23.81MiB 536.63KiB 10.95KiB 0 0.0220031 23.84MiB 331.36KiB 6.77KiB 0 0.0135722 False False
splunk_hec_indexer_ack_blackhole -3.64KiB -0.01 11.72% 23.75MiB 855.45KiB 17.4KiB 0 0.0351609 23.75MiB 860.65KiB 17.51KiB 0 0.0353799 False False
splunk_hec_to_splunk_hec_logs_acks -6.57KiB -0.03 21.06% 23.77MiB 845.99KiB 17.21KiB 0 0.0347535 23.76MiB 864.84KiB 17.59KiB 0 0.0355376 False False
http_to_http_json -24.03KiB -0.1 96.07% 23.85MiB 340.77KiB 6.96KiB 0 0.0139517 23.82MiB 457.35KiB 9.36KiB 0 0.0187434 False False
file_to_blackhole -113.24KiB -0.12 69.67% 95.31MiB 3.22MiB 66.63KiB 0 0.0337582 95.2MiB 4.21MiB 87.51KiB 0 0.0442078 False False
http_pipelines_blackhole -3.23KiB -0.2 72.34% 1.56MiB 59.43KiB 1.21KiB 0 0.0371918 1.56MiB 132.81KiB 2.71KiB 0 0.0832866 False False
fluent_elasticsearch -167.58KiB -0.21 100.00% 79.47MiB 53.37KiB 1.08KiB 0 0.000655626 79.31MiB 1.51MiB 30.97KiB 0 0.0189798 False False
socket_to_socket_blackhole -42.7KiB -0.31 100.00% 13.61MiB 159.41KiB 3.25KiB 0 0.0114337 13.57MiB 148.48KiB 3.03KiB 0 0.0106825 False False
syslog_splunk_hec_logs -58.0KiB -0.33 98.50% 16.93MiB 864.12KiB 17.58KiB 0 0.0498397 16.87MiB 790.35KiB 16.11KiB 0 0.0457381 False False
http_to_http_noack -84.96KiB -0.35 99.99% 23.84MiB 247.27KiB 5.06KiB 0 0.0101248 23.76MiB 1.0MiB 20.95KiB 0 0.0422494 False False
syslog_humio_logs -76.91KiB -0.44 100.00% 17.24MiB 301.63KiB 6.16KiB 0 0.0170802 17.17MiB 294.78KiB 6.03KiB 0 0.016765 False False
http_pipelines_no_grok_blackhole -53.22KiB -0.46 97.72% 11.32MiB 64.38KiB 1.31KiB 0 0.00555308 11.27MiB 1.12MiB 23.32KiB 0 0.0993874 False False
datadog_agent_remap_datadog_logs_acks -524.26KiB -0.83 100.00% 61.83MiB 3.68MiB 76.94KiB 0 0.0595205 61.32MiB 4.85MiB 101.01KiB 0 0.079122 False False
datadog_agent_remap_datadog_logs -901.88KiB -1.41 100.00% 62.53MiB 1.12MiB 23.47KiB 0 0.0179078 61.65MiB 4.16MiB 86.54KiB 0 0.0673793 False False
splunk_hec_route_s3 -285.08KiB -1.46 100.00% 19.02MiB 2.3MiB 47.82KiB 0 0.120687 18.74MiB 2.23MiB 46.61KiB 0 0.118795 False False
http_text_to_http_json -870.01KiB -2.19 100.00% 38.76MiB 820.21KiB 16.74KiB 0 0.0206606 37.91MiB 835.1KiB 17.06KiB 0 0.0215071 False False
syslog_loki -311.77KiB -2.21 100.00% 13.77MiB 466.75KiB 9.56KiB 0 0.0330984 13.46MiB 770.59KiB 15.66KiB 0 0.0558798 False False

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
domain: codecs Anything related to Vector's codecs (encoding/decoding) domain: sinks Anything related to the Vector's sinks domain: sources Anything related to the Vector's sources
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants