Network¶
Three new optional integer parameters to directory.xml were being added. All three are read once and cached, are resolved relative to the account/server node (so the same key may be set on either, and is resolvable on both the client and the server), and live under the runtime node. Each has a built-in default, so none of them has to be present.
Summary¶
| Parameter | Type | Default | Purpose |
|---|---|---|---|
chunk-transfer-size |
integer (bytes) | 1048576 (1 MB) |
Size threshold above which a large binary/character payload is streamed in chunks rather than sent whole, and the number of bytes per chunk. 0 disables chunking. |
web-push-queue-high-bytes |
integer (bytes) | 33554432 (32 MB) |
High-water mark for the web GUI push queue: a producer blocks once this many bytes are queued. |
web-push-queue-low-bytes |
integer (bytes) | 16777216 (16 MB) |
Low-water mark: a blocked producer is released once the queue drains below this. |
chunk-transfer-size¶
Controls the chunked-transfer subsystem that moves large payloads (appserver memptr/longchar/clob parameters, COPY-LOB and file content, memptr ranges, and server-to-client images and custom fonts). A payload larger than this value is streamed to the peer in chunks of this size instead of being marshalled whole into a single message; a payload at or below it is sent inline, exactly as before the subsystem existed. The same value is used both as the streaming decision threshold and as the per-chunk read/buffer size.
Setting the value to 0 disables chunking entirely: every payload is transferred whole (inline). This restores the pre-chunking behaviour and can be used when the chunked-transfer round trips are undesirable. Note that a whole-payload transfer holds the entire value in a single Java array, so a payload larger than about 2 GB will fail when chunking is disabled.
A negative or otherwise invalid value is ignored and the default applies.
Example — raise the chunk size to 2 MB:
<node class="integer" name="chunk-transfer-size"> <node-attribute name="value" value="2097152"/> </node>
Example — disable chunking (always transfer whole payloads):
<node class="integer" name="chunk-transfer-size"> <node-attribute name="value" value="0"/> </node>
web-push-queue-high-bytes and web-push-queue-low-bytes¶
These two form the backpressure watermarks for the web GUI push-message queue (the queue of messages waiting to be sent to the browser). They are counted in queued payload bytes:
web-push-queue-high-bytes— when the queued volume reaches this value, a producer thread blocks until the queue drains.web-push-queue-low-bytes— the blocked producer is released once the queued volume falls below this value.
Set the low-water mark below the high-water mark so the queue drains meaningfully before producers resume; the gap between the two is the hysteresis band. Both are optional and default to 32 MB and 16 MB respectively.
Example — a 64 MB / 32 MB band:
<node class="integer" name="web-push-queue-high-bytes"> <node-attribute name="value" value="67108864"/> </node> <node class="integer" name="web-push-queue-low-bytes"> <node-attribute name="value" value="33554432"/> </node>
Placement¶
Add the nodes under the runtime node of directory.xml, at the account or server scope. Because the values are resolved relative to both the account and server nodes, a key set once on the account applies to every server beneath it unless a server-scoped node overrides it.