[
https://issues.apache.org/jira/browse/GEODE-10035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
John Blum updated GEODE-10035:
------------------------------
Description:
In the {{o.a.g.internal.net.ByteBuffer.useDirectBuffers}} class member (static)
constant field
([source|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L82-L83]),
which is derived from either the "{{p2p.nodirectBuffers"}} OR the
"{{gemfire.BufferPool.useHeapBuffers}}" System properties, the conditional
logic is incorrect!
It should read (formatted to make it more readable):
{code:java}
public static final boolean useDirectBuffers = !(
Boolean.getBoolean("p2p.nodirectBuffers")
||
Boolean.getBoolean(GeodeGlossary.GEMFIRE_PREFIX+"BufferPool.useHeapBuffers")
);
{code}
The term "{{useHeapBuffers}}" implies that the buffer should created on the JVM
Heap, and not in main memory as a "direct" ByteBuffer.
Setting the System property "{{gemfire.BufferPool.useHeapBuffers}}" to
"{{true}}" would result in a direct ByteBuffer allocation as can be seen
[here|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L104-L115],
rather than what should happen
[here|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L117].
was:
In the {{o.a.g.internal.net.ByteBuffer.useDirectBuffers}} class member (static)
constant field
([source|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L82-L83]),
which is derived from either the "{{p2p.nodirectBuffers"}} OR the
"{{gemfire.BufferPool.useHeapBuffers}}" System properties, the conditional
logic is incorrect!
It should read:
{code:java}
public static final boolean useDirectBuffers = !(
Boolean.getBoolean("p2p.nodirectBuffers")
||
Boolean.getBoolean(GeodeGlossary.GEMFIRE_PREFIX+"BufferPool.useHeapBuffers")
);
{code}
The term "{{useHeapBuffers}}" implies that the buffer should created on the JVM
Heap, and not in main memory as a "direct" ByteBuffer.
Setting the System property "{{gemfire.BufferPool.useHeapBuffers}}" to
"{{true}}" would result in a direct ByteBuffer allocation as can be seen
[here|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L104-L115],
rather than what should happen
[here|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L117].
> The System property condition to use "direct" ByteBuffers in P2P is wrong
> -------------------------------------------------------------------------
>
> Key: GEODE-10035
> URL: https://issues.apache.org/jira/browse/GEODE-10035
> Project: Geode
> Issue Type: Improvement
> Affects Versions: 1.14.3
> Reporter: John Blum
> Priority: Major
>
> In the {{o.a.g.internal.net.ByteBuffer.useDirectBuffers}} class member
> (static) constant field
> ([source|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L82-L83]),
> which is derived from either the "{{p2p.nodirectBuffers"}} OR the
> "{{gemfire.BufferPool.useHeapBuffers}}" System properties, the conditional
> logic is incorrect!
> It should read (formatted to make it more readable):
> {code:java}
> public static final boolean useDirectBuffers = !(
> Boolean.getBoolean("p2p.nodirectBuffers")
> ||
> Boolean.getBoolean(GeodeGlossary.GEMFIRE_PREFIX+"BufferPool.useHeapBuffers")
> );
> {code}
> The term "{{useHeapBuffers}}" implies that the buffer should created on the
> JVM Heap, and not in main memory as a "direct" ByteBuffer.
> Setting the System property "{{gemfire.BufferPool.useHeapBuffers}}" to
> "{{true}}" would result in a direct ByteBuffer allocation as can be seen
> [here|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L104-L115],
>
> rather than what should happen
> [here|https://github.com/apache/geode/blob/rel/v1.14.3/geode-core/src/main/java/org/apache/geode/internal/net/BufferPool.java#L117].
--
This message was sent by Atlassian Jira
(v8.20.1#820001)