-
Notifications
You must be signed in to change notification settings - Fork 2.1k
test(sources/s3): fix infinite blocking and timeout issue in TestSource_Chunks #4048
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
Merged
rosecodym
merged 5 commits into
trufflesecurity:main
from
Juneezee:test/s3-integration-duplicate
Apr 24, 2025
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
1a7abe0
test(sources/s3): remove duplicate integration test case
Juneezee c2d0401
Merge two TestSourceChunksNoResumption into table-driven test
Juneezee d6655fe
Fix infinite blocking and timeout issue in TestSource_Chunks
Juneezee 6e020ff
Drain `chunksCh` channel
Juneezee 1ca8a95
Add missing return for ctx.Done() case
Juneezee File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/cc @rosecodym
Here is a more detailed explanation of why
TestSource_Chunksmay block indefinitely.The issue arises after the call to
s.Chunks(ctx, chunksCh). The relevant call stack is:(*Source).Chunkstrufflehog/pkg/sources/s3/s3.go
Lines 390 to 398 in 6d4ccfa
(*Source).scanBucketstrufflehog/pkg/sources/s3/s3.go
Line 363 in 6d4ccfa
(*Source).pageChunkertrufflehog/pkg/sources/s3/s3.go
Lines 579 to 583 in 6d4ccfa
HandleFiletrufflehog/pkg/handlers/handlers.go
Line 390 in 6d4ccfa
handleChunksWithErrortrufflehog/pkg/handlers/handlers.go
Lines 426 to 428 in 6d4ccfa
(ChanReporter).ChunkOktrufflehog/pkg/sources/legacy_reporters.go
Lines 15 to 17 in 6d4ccfa
And blocks infinitely in
CancellableWrite. BecausechunksChis an unbuffered channel, thech <- itemcase can never proceed since we only receive fromchunksChonce.trufflehog/pkg/common/context.go
Lines 23 to 35 in 6d4ccfa
After changing
chunksChto a buffered channel, I created a public S3 bucket and can confirm that the test no longer hangs infinitely:TestSource_Chunk_buffered_channel.mp4