Log start of payloads that are too big to send

Summary:
We've seen some crashes from toRSocketPayload, but aren't sure of the cause.
When we fail the DCHECK, there won't be any log output, so log before it if it's going to fail.

Reviewed By: passy

Differential Revision: D14131409

fbshipit-source-id: b71e043f0b5feac3d2e44a34cc38c72086f966ad
This commit is contained in:
John Knox
2019-02-19 08:47:57 -08:00
committed by Facebook Github Bot
parent 4e295f3247
commit 6cd8e1519f

View File

@@ -341,15 +341,16 @@ rsocket::Payload toRSocketPayload(dynamic data) {
std::string json = folly::toJson(data); std::string json = folly::toJson(data);
rsocket::Payload payload = rsocket::Payload(json); rsocket::Payload payload = rsocket::Payload(json);
auto payloadLength = payload.data->computeChainDataLength(); auto payloadLength = payload.data->computeChainDataLength();
DCHECK_LE(payloadLength, maxPayloadSize);
if (payloadLength > maxPayloadSize) { if (payloadLength > maxPayloadSize) {
auto logMessage = auto logMessage =
std::string( std::string(
"Error: Skipping sending message larger than max rsocket payload: ") + "Error: Skipping sending message larger than max rsocket payload: ") +
json; json.substr(0, 100) + "...";
log(logMessage);
DCHECK_LE(payloadLength, maxPayloadSize);
throw new std::length_error(logMessage); throw new std::length_error(logMessage);
} }
return payload; return payload;
} }