Commit 2b29d5d
fix(nodes): object store writer improvements — passthrough, bucket check, review fixes (#278)
* fix: enable object_store by default and fix sample pipeline client sections
- Add object_store to default features so the node is available without
extra build flags.
- Remove invalid 'output: type: none' from tts_to_s3.yml and
transcode_to_s3.yml — the output section is optional, so omitting it
is the correct way to indicate no client output.
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* feat(nodes): add passthrough mode to object store writer for oneshot pipelines
The oneshot engine requires linear pipelines (no fan-out). To support
S3 upload alongside http_output in oneshot mode, the object store writer
now accepts a 'passthrough' config option. When enabled, it forwards
every incoming Binary packet to its 'out' pin after buffering for S3,
allowing it to sit inline: muxer → s3_writer(passthrough) → http_output.
Changes:
- Add 'passthrough' bool config field (default: false)
- Conditionally expose 'out' output pin in passthrough mode
- Forward packets downstream after S3 buffering
- Update oneshot pipeline YAMLs to use linear passthrough topology
- Add Playwright E2E test (convert-s3.spec.ts) verifying both HTTP
response and S3 upload via RustFS
- Add unit tests for passthrough pin definitions
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* fix(nodes): preserve content_type and metadata in passthrough forwarding
The passthrough mode was reconstructing Binary packets with None for
content_type and metadata, discarding the original values set by
upstream muxers. Capture all fields in the destructure and forward
them as-is.
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* style(e2e): format convert-s3.spec.ts with prettier
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* style(e2e): reformat convert-s3.spec.ts with UI prettier config
The E2E project uses the UI's prettierrc (single quotes), not the
default prettier config.
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* fix(nodes): verify S3 bucket at init time and unify sample bucket names
Add a bucket existence check (HEAD request via operator.stat) during
node initialization, before opening the multipart writer. This catches
'NoSuchBucket' and permission errors immediately rather than after
streaming data for minutes.
Also unify all S3 sample pipelines to use 'streamkit-output' as the
bucket name for simpler local validation.
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* fix(nodes): address review findings for object store writer
Critical:
- resolve_credential now falls through to literal when env var is
missing or empty, instead of hard-erroring (defense-in-depth works)
Suggestions:
- Warn at config time when chunk_size < 5 MiB (S3 minimum part size)
- Continue S3 write when downstream output channel closes in passthrough
mode (archive completeness over early exit)
- Add #[serde(skip_serializing)] on access_key_id and secret_access_key
to prevent credential leakage in API responses / debug dumps
- Switch E2E test from execSync to execFileSync (no shell injection)
- Add inline comment explaining stats_tracker.sent() in sink mode
Nits:
- Use let _ = guard.disarm() to acknowledge unused return value
- Fix module doc: only services-s3 is compiled, not GCS/Azure
- Fix sample pipeline accept type: audio/ogg (not audio/opus)
Tests:
- Split env fallback tests into with-literal and without-literal variants
(15 tests total, all passing)
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* style: format resolve_credential tracing calls
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* fix: move S3_MIN_PART_SIZE constant to module scope
Fixes clippy::items_after_statements lint by moving the constant out of
the factory closure to the module-level constants section.
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* fix(nodes): pin RustFS image version and reject chunk_size < 5 MiB
- Pin docker-compose RustFS image to 1.0.0-alpha.90 (was :latest)
- Harden chunk_size validation: reject values below 5 MiB at config
time instead of warning (prevents runtime EntityTooSmall errors)
- Update schemars annotation to reflect 5 MiB minimum
- Add test for sub-5MiB chunk_size rejection (16 tests total)
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* style: format chunk_size test assertion
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
* fix: add underscores to schemars range literal for clippy
Fixes clippy::unreadable_literal on the 5242880 constant in the
schemars attribute.
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-Authored-By: Claudio Costa <cstcld91@gmail.com>
---------
Signed-off-by: StreamKit Devin <devin@streamkit.dev>
Co-authored-by: StreamKit Devin <devin@streamkit.dev>
Co-authored-by: Claudio Costa <cstcld91@gmail.com>1 parent 2e6bea7 commit 2b29d5d
File tree
8 files changed
+416
-29
lines changed- crates/nodes
- src/core
- docker
- e2e/tests
- samples/pipelines
- dynamic
- oneshot
8 files changed
+416
-29
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
131 | 132 | | |
132 | 133 | | |
133 | 134 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
208 | 208 | | |
209 | 209 | | |
210 | 210 | | |
211 | | - | |
| 211 | + | |
| 212 | + | |
212 | 213 | | |
213 | 214 | | |
214 | 215 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
7 | | - | |
8 | | - | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
12 | 13 | | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
13 | 21 | | |
14 | 22 | | |
15 | 23 | | |
| |||
27 | 35 | | |
28 | 36 | | |
29 | 37 | | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
30 | 43 | | |
31 | 44 | | |
32 | 45 | | |
| |||
67 | 80 | | |
68 | 81 | | |
69 | 82 | | |
70 | | - | |
| 83 | + | |
71 | 84 | | |
72 | 85 | | |
73 | 86 | | |
| |||
79 | 92 | | |
80 | 93 | | |
81 | 94 | | |
82 | | - | |
| 95 | + | |
83 | 96 | | |
84 | 97 | | |
85 | 98 | | |
| |||
93 | 106 | | |
94 | 107 | | |
95 | 108 | | |
96 | | - | |
| 109 | + | |
97 | 110 | | |
98 | 111 | | |
99 | 112 | | |
100 | 113 | | |
101 | 114 | | |
102 | 115 | | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
103 | 125 | | |
104 | 126 | | |
105 | 127 | | |
| |||
128 | 150 | | |
129 | 151 | | |
130 | 152 | | |
131 | | - | |
132 | | - | |
133 | | - | |
| 153 | + | |
| 154 | + | |
134 | 155 | | |
135 | 156 | | |
136 | | - | |
137 | | - | |
138 | | - | |
| 157 | + | |
| 158 | + | |
139 | 159 | | |
140 | 160 | | |
141 | 161 | | |
| |||
240 | 260 | | |
241 | 261 | | |
242 | 262 | | |
| 263 | + | |
243 | 264 | | |
244 | 265 | | |
245 | 266 | | |
| |||
268 | 289 | | |
269 | 290 | | |
270 | 291 | | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
271 | 300 | | |
272 | 301 | | |
273 | 302 | | |
| |||
288 | 317 | | |
289 | 318 | | |
290 | 319 | | |
291 | | - | |
292 | | - | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
293 | 330 | | |
294 | 331 | | |
295 | 332 | | |
| |||
348 | 385 | | |
349 | 386 | | |
350 | 387 | | |
351 | | - | |
| 388 | + | |
| 389 | + | |
| 390 | + | |
| 391 | + | |
| 392 | + | |
| 393 | + | |
| 394 | + | |
| 395 | + | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
352 | 404 | | |
353 | 405 | | |
354 | 406 | | |
| |||
384 | 436 | | |
385 | 437 | | |
386 | 438 | | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
387 | 442 | | |
388 | 443 | | |
389 | | - | |
| 444 | + | |
390 | 445 | | |
391 | 446 | | |
392 | 447 | | |
| |||
414 | 469 | | |
415 | 470 | | |
416 | 471 | | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
417 | 489 | | |
418 | 490 | | |
419 | 491 | | |
| |||
458 | 530 | | |
459 | 531 | | |
460 | 532 | | |
461 | | - | |
| 533 | + | |
462 | 534 | | |
463 | 535 | | |
464 | 536 | | |
| |||
488 | 560 | | |
489 | 561 | | |
490 | 562 | | |
491 | | - | |
| 563 | + | |
492 | 564 | | |
493 | | - | |
| 565 | + | |
494 | 566 | | |
495 | 567 | | |
496 | 568 | | |
| |||
503 | 575 | | |
504 | 576 | | |
505 | 577 | | |
| 578 | + | |
506 | 579 | | |
507 | 580 | | |
508 | 581 | | |
| |||
515 | 588 | | |
516 | 589 | | |
517 | 590 | | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
518 | 620 | | |
519 | 621 | | |
520 | 622 | | |
| |||
534 | 636 | | |
535 | 637 | | |
536 | 638 | | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
537 | 658 | | |
538 | 659 | | |
539 | 660 | | |
| |||
568 | 689 | | |
569 | 690 | | |
570 | 691 | | |
| 692 | + | |
| 693 | + | |
| 694 | + | |
| 695 | + | |
| 696 | + | |
| 697 | + | |
| 698 | + | |
| 699 | + | |
| 700 | + | |
571 | 701 | | |
572 | 702 | | |
573 | 703 | | |
574 | 704 | | |
575 | 705 | | |
576 | 706 | | |
577 | 707 | | |
| 708 | + | |
| 709 | + | |
| 710 | + | |
| 711 | + | |
| 712 | + | |
| 713 | + | |
| 714 | + | |
| 715 | + | |
578 | 716 | | |
579 | 717 | | |
580 | 718 | | |
| |||
675 | 813 | | |
676 | 814 | | |
677 | 815 | | |
| 816 | + | |
678 | 817 | | |
679 | 818 | | |
680 | 819 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
25 | | - | |
| 25 | + | |
26 | 26 | | |
27 | 27 | | |
28 | 28 | | |
| |||
0 commit comments