[ 
https://issues.apache.org/jira/browse/BEAM-7883?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16911473#comment-16911473
 ] 

Yurii Atamanchuk commented on BEAM-7883:
----------------------------------------

Thanks!
Yeah, another option can be to add something like `public abstract byte[] 
encodePayload(byte[] payload)` into PubsubClient to get better estimation (esp 
for Json clinet) of message size, but probably it's not really worth it :)

> PubsubIO (Java) write batch size can exceed request payload limit
> -----------------------------------------------------------------
>
>                 Key: BEAM-7883
>                 URL: https://issues.apache.org/jira/browse/BEAM-7883
>             Project: Beam
>          Issue Type: Bug
>          Components: io-java-gcp
>    Affects Versions: 2.13.0
>            Reporter: Yurii Atamanchuk
>            Priority: Minor
>
> In some (probably rare) cases PubsubIO write (in Batch mode) batch size can 
> exceed request payload limit of 10mb. PubsubIO ensures that batch size is 
> less than limit (10mb by default). But then PubsubJsonClient is used that 
> converts message payloads into URL-Safe Base64 encoding which can inflate 
> message size (in my case for json strings it was up to 25-30%). As result we 
> get 400 response (with 'Request payload size exceeds the limit: 10485760 
> bytes' message), even though original batch had correct size.
> Obvious workaround is to reduce batch size 
> (`PubsubIO.writeMessages().to(...).withMaxBatchBytesSize(... i.e. 5mb ...)`), 
> but it is a bit annoying.



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to