Disk buffer related queries - Version 0.22.0 #13001
-
Beta Was this translation helpful? Give feedback.
Replies: 4 comments 14 replies
-
Hi @hemanthofficial3009 !
That's correct, it is the maximum size of the disk buffer, in bytes. I believe it does round to the nearest "block" size though so in practice it might be a bit larger. cc/ @tobz to confirm that behavior.
That's correct, if
The
@tobz can probably better answer this since it pertains to the internals of the buffer, but my understanding is that it will compact and delete files. I'm not sure what the theoretical maximum disk usage for a given
|
Beta Was this translation helpful? Give feedback.
-
Just to follow up:
Each data file is limited to ~128MB, and we always need to allow a minimum of two data files to co-exist to ensure buffer writes can continue when a full data file is still being read, hence 2x 128MB, and thus 256MB. This is enforced automatically even if you set the value lower in your configuration.
So as mentioned above, we use 128MB as the maximum size for an individual data file. In terms of when buffer files are deleted:
Putting it all together:
|
Beta Was this translation helpful? Give feedback.
-
@hemanthofficial3009 Alright, so I double checked: if an Since our components are all loosely linked via channels, the component that tries to send into the buffer, and fails due to insufficient space, would stop, and then any other component trying to send to that one would also die, in a cascading fashion back up to the source. I opened #13043 as a high-level issue for tracking working related to improving this, both in terms of better errors on what is happening when a write fails and all of the components that don't have the buffer seem to die, as well as in terms of trying to gracefully handle out-of-space errors if possible. |
Beta Was this translation helpful? Give feedback.
-
In your example case, what you're observing is how the disk buffer deals with adjusting the buffer limits to ensure it has enough space to provide certain invariants so the buffer can operate correctly. Prior to 0.23.0Prior to 0.23.0, the logic for the buffer looked like this:
After that, we limited the buffer to storing as many outstanding events (not read/processed yet) as would fit in As you observed, even after going past After 0.23.0In 0.23.0, specifically in #13356, we changed that logic to be stricter about guarantees of maximum data file size, as well as the error message when the specified We also avoid rounding to a multiple of the maximum data file size now, so as long as the buffer maximum size is greater than |
Beta Was this translation helpful? Give feedback.
In your example case, what you're observing is how the disk buffer deals with adjusting the buffer limits to ensure it has enough space to provide certain invariants so the buffer can operate correctly.
Prior to 0.23.0
Prior to 0.23.0, the logic for the buffer looked like this:
buffer.max_size
) down to the nearest multiple of the maximum data file size (128MB
)128MB
After that, we limited the buffer to storing as many outstanding events (not read/processed yet…