Browse Source

TbHttpClient - added check for maxInMemoryBufferSizeInKb; should be less than system configured maxInMemoryBufferSizeInKb

pull/11500/head
Volodymyr Babak 2 years ago
parent
commit
b226ebdccf
  1. 19
      rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java

19
rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java

@ -80,6 +80,8 @@ public class TbHttpClient {
public static final String PROXY_USER = "tb.proxy.user";
public static final String PROXY_PASSWORD = "tb.proxy.password";
public static final String MAX_IN_MEMORY_BUFFER_SIZE_IN_KB = "tb.http.maxInMemoryBufferSizeInKb";
private final TbRestApiCallNodeConfiguration config;
private EventLoopGroup eventLoopGroup;
@ -129,6 +131,8 @@ public class TbHttpClient {
httpClient = httpClient.secure(t -> t.sslContext(sslContext));
}
validateMaxInMemoryBufferSize(config);
this.webClient = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient))
.defaultHeader(HttpHeaders.CONNECTION, "close") //In previous realization this header was present! (Added for hotfix "Connection reset")
@ -140,6 +144,21 @@ public class TbHttpClient {
}
}
private void validateMaxInMemoryBufferSize(TbRestApiCallNodeConfiguration config) throws TbNodeException {
int systemMaxInMemoryBufferSizeInKb = 25000;
try {
Properties properties = System.getProperties();
if (properties.containsKey(MAX_IN_MEMORY_BUFFER_SIZE_IN_KB)) {
systemMaxInMemoryBufferSizeInKb = Integer.parseInt(properties.getProperty(MAX_IN_MEMORY_BUFFER_SIZE_IN_KB));
}
} catch (Exception ignored) {}
if (config.getMaxInMemoryBufferSizeInKb() > systemMaxInMemoryBufferSizeInKb) {
throw new TbNodeException("The configured maximum in-memory buffer size (in KB) exceeds the system limit for this parameter.\n" +
"The system limit is " + systemMaxInMemoryBufferSizeInKb + " KB.\n" +
"Please use the system variable '" + MAX_IN_MEMORY_BUFFER_SIZE_IN_KB + "' to override the system limit.");
}
}
EventLoopGroup getSharedOrCreateEventLoopGroup(EventLoopGroup eventLoopGroupShared) {
if (eventLoopGroupShared != null) {
return eventLoopGroupShared;

Loading…
Cancel
Save