All,

I added more tests and found that most the optimizations were not happening due 
to buffering.

Essentially there are two buffers between Snippet.Buffer and 
Snippet.SnippetOutputStream.  The SnippetOutputStream had the responsibility to 
tell the code up the stack when we've reached the max snippet length.  Since 
all the bytes were buffered, it would see nothing until the very end and we'd 
end up serializing the full json text anyway.

One is the 64k buffer in JsonGeneratorImpl and the other is an 8k buffer in the 
JVM implementation code of OutputStreamWriter.  Since the OutputStreamWriter 
buffer is hardcoded, we can't solve this by adjusting buffer sizes and have no 
choice but to aggressively call flush() to ensure SnippetOutputStream has the 
bytes and can do its job.

I've reworked the code and greatly expanded the tests so we're not just 
asserting the resulting text but the details in how we get there.

We could potentially have Snippet override the buffer setting of 
JsonGeneratorFactoryImpl so the buffer is of snippetMaxLength.  I'm curious as 
to what others think.  On one hand, we could fit 1310 snippet buffers of 50 
bytes into the size of just one 64k default buffer.  On the other hand, we're 
coping config maps and essentially building a new factory to get there.  I'm 
not sure if I like that idea.


> On Apr 21, 2022, at 10:39 PM, Romain Manni-Bucau <rmannibu...@gmail.com> 
> wrote:
> 
> Le ven. 22 avr. 2022 à 01:00, David Blevins <david.blev...@gmail.com> a
> écrit :
>> Where do we document these kinds of parameters?  If you have any pointers
>> I'll try to work that into the next PR along with using this in a few more
>> places.
>> 
> 
> We use maven site. so
> https://github.com/apache/johnzon/blob/master/src/site/markdown/index.md
> It is not great in terms of browsing but the place we have as of today.
> Feel free to break it in several places if you think it is better.

Great, thanks.  Looks like we haven't yet started documenting the config 
properties that can be passed into JsonbConfig.

I'll probably defer that then and move on to updating all the error messages in 
a second PR.  Getting proper documentation for our JsonbConfig properties is 
likely to involve a larger effort to compile a list of all the properties and 
their defaults.  That will definitely be work unto itself.


-David

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to