Thanks Everyone! I could not regenerate issue by dropping memory to 30% or by 
reducing tombstone-gc-timeout. It does work and that’s what I can understand 
from below logs.
In fact it was used to work for this long running application and we had never 
seen this in past.

[debug 2018/07/10 14:11:17.139 IST <P2P message reader for 
host001(MyGeodeServer:18076)<ec><v10>:1026 shared ordered uid=7 port=54273> 
tid=0x56] gcTombstones invoked for region 
org.apache.geode.internal.cache.DistributedRegion[path='/Sample';scope=DISTRIBUTED_ACK';dataPolicy=REPLICATE;
 concurrencyChecksEnabled] and version map { host001 
(MyGeodeServer)<ec><v13>:1027=0, host001 (MyGeodeServer)<ec><v10>:1026=2448235}

Let me share my thoughts based on Charlie Black’s idea


1.       Initially I thought, TombstoneSweeper might have been referenced 
somewhere using reflection and due to private visibility, it could have caused 
the issue. But that’s not the case.



2.       So i thought what if class might have been unloaded by JVM? That’s 
where Charlie’s point reminded me about classloader leaks in java.



3.       Spring boot app was not restarted but internal geode distributed 
system was reloaded/bootstrapped/redeployed after force disconnect attempt in 
my case. And after that only issue was reported.



4.       In fact, simply restarting the process solved the issue at that time 
but I wanted to find root cause.



Note: I don’t have deep understanding in classloader leaks but that’s the 
obvious one right now. Issue is there so problem must be there. I don’t have 
anything user specific but it is trivial spring boot geode server,



Few more similar ones:

https://stackoverflow.com/questions/22918923/noclassdeffounderror-on-previously-operational-function?noredirect=1&lq=1
https://stackoverflow.com/questions/18706970/what-could-cause-a-sudden-classnotfoundexception-in-a-long-running-process

Thanks,
Dharam


From: John Blum [mailto:[email protected]]
Sent: Tuesday, July 10, 2018 1:47 AM
To: [email protected]
Subject: Re: Issue with TombstoneService

As a general rule of thumb, SDG fixes it's version of Apache Geode once it 
reaches a Release Candidate (e.g. RC1) for any particular SD Release Train.

For instance, currently SDG Lovelace (i.e. 2.1) is on Apache Geode 1.6.  If 
there is not another release of Geode before SDG 2.1/Lovelace reaches RC1, then 
SDG 2.1/Lovelace will be fixed on Geode 1.6.  As a result, the version of Geode 
on which SDG is based will not change until the master branch becomes SDG 2.2, 
or SD Moore.  Furthermore, master will not become SDG 2.2/Moore until SDG 
2.1/Lovelace reaches GA.  There can any number of Release Candidates before 
final GA.  For example, SDG 2.0/Kay had 3 Release Candidates (2.0.0.RC1, 
2.0.0.RC2, 2.0.0.RC3).  See the tags here [1].  I suspect there will be only 1 
RC for SDG Lovelace, 2 at the most.


[1] 
https://github.com/spring-projects/spring-data-geode<https://secureweb.jpmchase.net/readonly/https:/github.com/spring-projects/spring-data-geode>


On Mon, Jul 9, 2018 at 12:44 PM, John Blum 
<[email protected]<mailto:[email protected]>> wrote:
Apache Geode 1.3 and higher is not going to work with SDG 2.0.x (SD Kay).  SDG 
2.0.x is fixed on Apache Geode 1.2.x [1] since there are significant API 
changes in Geode after 1.2.

To use SDG with the latest version of Apache Geode (i.e. 1.6), you must use SD 
Lovelace, or SDG 2.1.x, which is currently at M3 [2].

[1] 
https://github.com/spring-projects/spring-data-geode/blob/2.0.8.RELEASE/pom.xml#L25<https://secureweb.jpmchase.net/readonly/https:/github.com/spring-projects/spring-data-geode/blob/2.0.8.RELEASE/pom.xml#L25>
[2] 
https://github.com/spring-projects/spring-data-geode/blob/2.1.0.M3/pom.xml#L25<https://secureweb.jpmchase.net/readonly/https:/github.com/spring-projects/spring-data-geode/blob/2.1.0.M3/pom.xml#L25>


On Mon, Jul 9, 2018 at 11:56 AM, Udo Kohlmeyer 
<[email protected]<mailto:[email protected]>> wrote:

Hi there Dharam,

I've been trying to reproduce your "NoClassDefFoundError" and I've been 
unsuccessful.

Would you be willing to share the steps you've used to successfully reproduce 
this error? In addition to that, to avoid the Geode community chasing its tail, 
could you possibly test with a later version of Spring Data Geode (maybe 
2.0.8.Release) using either the default geode-core 1.2.0 or updating to use the 
1.6.0?

I'd be interested in understanding how this error can happen (other than a 
class not being on the CP) but also to see if this is an issue in the current 
release.

--Udo

On 7/8/18 23:21, Thacker, Dharam wrote:
Hi Anthony,

I have attached classpath portion of log in attachment.
It’s true that I am booting up geode server using spring boot and 
spring-data-geode.

But I see all geode-* jars in classpath as expected.

In local, I could regenerate this issue as well.

Option1: I don’t have enough number of tombstones to trigger GC (100,000 
default) but server memory dropped below 30% which should have triggered this.
Option2:  Simulate force disconnect of member from distributed system and let 
server member make an attempt to rejoin distributed system. Once it’s done, 
load 100K dummy records and destroy them in sometime with REPLICATED mode, 2 
peers.

Thanks,
Dharam

From: Charlie Black [[email protected]<mailto:[email protected]>]
Sent: Thursday, July 05, 2018 10:29 PM
To: [email protected]<mailto:[email protected]>
Subject: Re: Issue with TombstoneService

Are we redeploying the geode jar to the jvm? Or have some kind of interesting 
classloader?
On Thu, Jul 5, 2018 at 8:36 AM Anthony Baker 
<[email protected]<mailto:[email protected]>> wrote:
Thanks for the error report.  Can you share the portion of the log that dumps 
the classpath?  It looks like you’re starting geode with springboot and perhaps 
the classpath is incorrect.  If geode-*.jar is on the classpath I don’t see how 
you could get this error.

Anthony


On Jul 4, 2018, at 12:16 AM, Thacker, Dharam 
<[email protected]<mailto:[email protected]>> wrote:

Hello Team,

Today we encountered below issue with Geode 1.1.1 (Should exists in Geode 1.6.0 
as well as per codebase).

[severe 2018/07/03 11:03:53.914 EDT event-server-2 <Replicate/Partition Region 
Garbage Collector> tid=0x4d] GemFire garbage collection service encountered an 
unexpected exception
java.lang.NoClassDefFoundError: 
org/apache/geode/internal/cache/TombstoneService$ReplicateTombstoneSweeper$1
        at 
org.apache.geode.internal.cache.TombstoneService$ReplicateTombstoneSweeper.expireBatch(TombstoneService.java:566)
        at 
org.apache.geode.internal.cache.TombstoneService$ReplicateTombstoneSweeper.checkExpiredTombstoneGC(TombstoneService.java:596)
        at 
org.apache.geode.internal.cache.TombstoneService$TombstoneSweeper.run(TombstoneService.java:882)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: 
org.apache.geode.internal.cache.TombstoneService$ReplicateTombstoneSweeper$1
        at 
java.net<https://secureweb.jpmchase.net/readonly/http:/java.net>.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at 
org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:94)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)


This makes sense to me as ReplicateTombstoneSweeper is a private static class 
within TombstoneService.

Could you also verify at your end?


Another one as below which I think should not come with 1.6.0 as ThreadUtils 
has been deprecated/removed from newer versions.

[severe 2018/07/03 11:03:53.916 EDT event-server-2 <Replicate/Partition Region 
Garbage Collector> tid=0x4d] Uncaught exception in thread 
Thread[Replicate/Partition Region Garbage Collector,5,Destroyed Entries 
Processors]
java.lang.NoClassDefFoundError: org/apache/geode/internal/lang/ThreadUtils
        at 
org.apache.geode.internal.logging.log4j.AlertAppender.append(AlertAppender.java:141)
        at 
org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
        at 
org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
        at 
org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
        at 
org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:447)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:432)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:416)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:438)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:416)
        at 
org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:402)
        at 
org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63)
        at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146)
        at 
org.apache.logging.log4j.spi.ExtendedLoggerWrapper.logMessage(ExtendedLoggerWrapper.java:217)
        at 
org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2091)
        at 
org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1813)
        at 
org.apache.logging.log4j.spi.AbstractLogger.fatal(AbstractLogger.java:1005)
        at 
org.apache.geode.internal.cache.TombstoneService$TombstoneSweeper.run(TombstoneService.java:895)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: 
org.apache.geode.internal.lang.ThreadUtils

Thanks,
Dharam

This message is confidential and subject to terms at: 
http://www.jpmorgan.com/emaildisclaimer<http://www.jpmorgan.com/emaildisclaimer>
 including on confidentiality, legal privilege, viruses and monitoring of 
electronic messages. If you are not the intended recipient, please delete this 
message and notify the sender immediately. Any unauthorized use is strictly 
prohibited.

--
[email protected]<mailto:[email protected]> | +1.858.480.9722
Principal Realtime Data Engineer

This message is confidential and subject to terms at: 
http://www.jpmorgan.com/emaildisclaimer<http://www.jpmorgan.com/emaildisclaimer>
 including on confidentiality, legal privilege, viruses and monitoring of 
electronic messages. If you are not the intended recipient, please delete this 
message and notify the sender immediately. Any unauthorized use is strictly 
prohibited.




--
-John
john.blum10101 (skype)



--
-John
john.blum10101 (skype)

This message is confidential and subject to terms at: 
http://www.jpmorgan.com/emaildisclaimer including on confidentiality, legal 
privilege, viruses and monitoring of electronic messages. If you are not the 
intended recipient, please delete this message and notify the sender 
immediately. Any unauthorized use is strictly prohibited.

Reply via email to