Uploaded image for project: 'Geode'
  1. Geode
  2. GEODE-8614

Provide an specific client-side exception for server LowMemoryException

    XMLWordPrintableJSON

Details

    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:

      [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.
      

      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
      • ...

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              gaussianrecurrence Mario Salazar de Torres
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: