[ 
https://issues.apache.org/jira/browse/GEODE-8614?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mario Salazar de Torres updated GEODE-8614:
-------------------------------------------
    Description: 
*AS AN* native client contributor
 *I WANT* to have a client-side exception for LowMemoryException
 *SO THAT* I can nofity accordingly from the client-side upon server 
memory-depletion.

—

*Additional information*
 This is the callstack of the LowMemoryException:
{noformat}
[error 2020/10/13 09:54:14.401405 UTC 140522117220352] Region::put: An 
exception (org.apache.geode.cache.LowMemoryException: PartitionedRegion: 
/part_a cannot process operation on key foo|0 because members 
[192.168.240.14(dms-server-1:1)<v2>:41000] are running low on memory
at 
org.apache.geode.internal.cache.partitioned.RegionAdvisor.checkIfBucketSick(RegionAdvisor.java:482)
at 
org.apache.geode.internal.cache.PartitionedRegion.checkIfAboveThreshold(PartitionedRegion.java:2278)
at 
org.apache.geode.internal.cache.PartitionedRegion.putInBucket(PartitionedRegion.java:2982)
at 
org.apache.geode.internal.cache.PartitionedRegion.virtualPut(PartitionedRegion.java:2212)
at 
org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:170)
at 
org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5573)
at 
org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5533)
at 
org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5212)
at 
org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:411)
at 
org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:183)
at 
org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMessage(ServerConnection.java:848)
at 
org.apache.geode.internal.cache.tier.sockets.OriginalServerConnection.doOneMessage(OriginalServerConnection.java:72)
at 
org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1212)
at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at 
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.lambda$initializeServerConnectionThreadPool$3(AcceptorImpl.java:676)
at 
org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:119)
at java.base/java.lang.Thread.run(Thread.java:834) ) happened at remote server.
{noformat}
Idea would be to modify *ThinClientRegion::handleServerException* in order to 
return a new error and later on, map it to a new created exception

*Suggestions*
 The new exception could be called:
 * CacheServerLowMemoryException
 * ...

  was:
*AS AN* native client contributor
*I WANT* to have a client-side exception for LowMemoryException
*SO THAT* I can nofity accordingly from the client-side upon server 
memory-depletion.

---

*Additional information*
This is the callstack of the LowMemoryException:

{noformat}
[error 2020/10/13 09:54:14.401405 UTC 140522117220352] Region::put: An 
exception (org.apache.geode.cache.LowMemoryException: PartitionedRegion: 
/part_a cannot process operation on key foo|0 because members 
[192.168.240.14(dms-server-1:1)<v2>:41000] are running low on memory at 
org.apache.geode.internal.cache.partitioned.RegionAdvisor.checkIfBucketSick(RegionAdvisor.java:482)
 at 
org.apache.geode.internal.cache.PartitionedRegion.checkIfAboveThreshold(PartitionedRegion.java:2278)
 at 
org.apache.geode.internal.cache.PartitionedRegion.putInBucket(PartitionedRegion.java:2982)
 at 
org.apache.geode.internal.cache.PartitionedRegion.virtualPut(PartitionedRegion.java:2212)
 at 
org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:170)
 at 
org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5573) 
at 
org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5533) 
at 
org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5212)
 at 
org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:411)
 at 
org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:183)
 at 
org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMessage(ServerConnection.java:848)
 at 
org.apache.geode.internal.cache.tier.sockets.OriginalServerConnection.doOneMessage(OriginalServerConnection.java:72)
 at 
org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1212)
 at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
 at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
 at 
org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.lambda$initializeServerConnectionThreadPool$3(AcceptorImpl.java:676)
 at 
org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:119)
 at java.base/java.lang.Thread.run(Thread.java:834) ) happened at remote server.
{noformat}

Idea would be to modify *ThinClientRegion::handleServerException* in order to 
return a new error and later on, map it to a new created exception

*Suggestions*
The new exception could be called:
 * CacheServerLowMemoryException
 * ...


> Provide an specific client-side exception for server LowMemoryException
> -----------------------------------------------------------------------
>
>                 Key: GEODE-8614
>                 URL: https://issues.apache.org/jira/browse/GEODE-8614
>             Project: Geode
>          Issue Type: Improvement
>          Components: native client
>    Affects Versions: 1.11.0, 1.12.0, 1.13.0
>            Reporter: Mario Salazar de Torres
>            Priority: Major
>
> *AS AN* native client contributor
>  *I WANT* to have a client-side exception for LowMemoryException
>  *SO THAT* I can nofity accordingly from the client-side upon server 
> memory-depletion.
> —
> *Additional information*
>  This is the callstack of the LowMemoryException:
> {noformat}
> [error 2020/10/13 09:54:14.401405 UTC 140522117220352] Region::put: An 
> exception (org.apache.geode.cache.LowMemoryException: PartitionedRegion: 
> /part_a cannot process operation on key foo|0 because members 
> [192.168.240.14(dms-server-1:1)<v2>:41000] are running low on memory
> at 
> org.apache.geode.internal.cache.partitioned.RegionAdvisor.checkIfBucketSick(RegionAdvisor.java:482)
> at 
> org.apache.geode.internal.cache.PartitionedRegion.checkIfAboveThreshold(PartitionedRegion.java:2278)
> at 
> org.apache.geode.internal.cache.PartitionedRegion.putInBucket(PartitionedRegion.java:2982)
> at 
> org.apache.geode.internal.cache.PartitionedRegion.virtualPut(PartitionedRegion.java:2212)
> at 
> org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:170)
> at 
> org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5573)
> at 
> org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5533)
> at 
> org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5212)
> at 
> org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:411)
> at 
> org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:183)
> at 
> org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMessage(ServerConnection.java:848)
> at 
> org.apache.geode.internal.cache.tier.sockets.OriginalServerConnection.doOneMessage(OriginalServerConnection.java:72)
> at 
> org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1212)
> at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
> at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
> at 
> org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.lambda$initializeServerConnectionThreadPool$3(AcceptorImpl.java:676)
> at 
> org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:119)
> at java.base/java.lang.Thread.run(Thread.java:834) ) happened at remote 
> server.
> {noformat}
> Idea would be to modify *ThinClientRegion::handleServerException* in order to 
> return a new error and later on, map it to a new created exception
> *Suggestions*
>  The new exception could be called:
>  * CacheServerLowMemoryException
>  * ...



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to