If you verified the region name and key it blows up on it might give you a
clue.
The call stack shows this was an LRU region. By calling "get" on the server
from a function, it causes geode to attempt to deserialize the value on the
server. Previous to this the value would have been in serialized form. The
size of a deserialized value is different from a serialized value so it is
trying to recompute the size of the deserialized value and that is the code
that throws the exception.
It seems you have found a case in which we can deserialize successfully but
then when we try to compute the size of the deserialized value it runs into
problems.

On Tue, May 29, 2018 at 1:58 PM, John Blum <[email protected]> wrote:

> Because you enabled Management functionality on the *Spring*-configured
> Geode Server started with *Gfsh.*..
>
> <util:properties id="gemfire-props">
>     <prop key="log-level">info</prop>
>     <prop key="locators">pvz-dell.lautus.net[10334]</prop>
>     <prop key="start-locator">pvz-dell.lautus.net[10334]</prop>
>     <!--<prop key="start-locator">>pvz-dell.lautus.net[10335]</prop>-->
>     <prop key="mcast-port">0</prop>
>
> *    <prop key="http-service-port">0</prop>*
>
>
>
>
>
> *    <prop key="jmx-manager">true</prop>    <prop
> key="jmx-manager-port">1099</prop>    <prop
> key="jmx-manager-start">true</prop>    <!--<prop
> key="jmx-manager-ssl">true</prop>-->    <!--<prop
> key="jmx-manager-http-port">8080</prop>-->*</util:properties>
>
> And had the Management HTTP port been enabled (i.e. not 0, as it were
> previously) then this is what would have required the Jetty JARs to be on
> the classpath since the embedded HTTP service is bootstrapped with Jetty
> under the Geode hood.
>
> Other than *Pulse* or the *Developer REST API*, I don't recall what other
> Apache Geode embedded services would require Jetty, and especially refer to
> Jetty classes (outside of Management).  There is nothing in SDG that
> requires or pulls in Jetty classes.  And when the "*http-service-port*"
> is disabled (i.e. 0) the Jetty container should not even startup.
>
> However, if some internal Apache Geode Management (message) class (or
> classes) was/were referring to a Jetty class in some way, then this might
> explain the serialization issue.
>
> What happens when you disable Management on this node?
>
> Note, you can still start a Locator using Gfsh, have the *Spring*
> configured Apache Geode Server connect to that Locator and connect to the
> cluster and manage the *Spring* node as you would if the *Spring*
> configured node started everything.  There are many ways to do this; what
> you have is the most convenient, especially when you are just working
> directly inside your IDE, but if you are using *Gfsh* anyway, then,
> well...   Anyway, see here [1] for an example of what I refer to.
>
> -j
>
> [1] https://github.com/jxblum/spring-boot-gemfire-server-example
>
>
> On Tue, May 29, 2018 at 1:08 PM, Pieter van Zyl <[email protected]
> > wrote:
>
>> Hi Anthony
>>
>> Starting the server with Spring.
>>
>> Will add the vm setting and see what I can find
>> Can try and start it with gfsh as well
>>
>> Kindly
>> Pieter
>>
>> On Tue, 29 May 2018 at 9:55 PM Anthony Baker <[email protected]> wrote:
>>
>>> Just curious, are you starting your server(s) with Spring or gfsh?
>>>
>>> The only references I see to org/eclipse/jetty/server/Server are not
>>> related:
>>>
>>> ~/code/incubator-geode (develop)$ git grep 
>>> 'org.eclipse.jetty.server.Server\;'
>>> . | grep -v test
>>> geode-core/src/main/java/org/apache/geode/management/internal/JettyHelper.java:import
>>> org.eclipse.jetty.server.Server;
>>> geode-core/src/main/java/org/apache/geode/management/internal/ManagementAgent.java:import
>>> org.eclipse.jetty.server.Server;
>>> geode-core/src/main/java/org/apache/geode/management/internal/RestAgent.java:import
>>> org.eclipse.jetty.server.Server;
>>>
>>> You might try starting the jvm with `-verbose:class` to help identify
>>> which class is referencing Jetty.
>>>
>>>
>>> Anthony
>>>
>>>
>>> > On May 29, 2018, at 12:04 PM, Pieter van Zyl <
>>> [email protected]> wrote:
>>> >
>>> > Good day
>>> >
>>> >
>>> > I am trying to execute a function on the server that will iterate
>>> through all my regions and their content.
>>> >
>>> > I am getting the error below when trying to get a value out of a region
>>> >
>>> >
>>> > [fatal 2018/05/29 19:28:02.829 SAST <ServerConnection on port 40404
>>> Thread 1> tid=0x53] Server connection from 
>>> [identity(10.0.0.5(5166:loner):37736:45b2f0ac,connection=1;
>>> port=38136] : Unexpected Error on server
>>> > java.lang.NoClassDefFoundError: Lorg/eclipse/jetty/server/Server;
>>> > at java.lang.Class.getDeclaredFields0(Native Method)
>>> > at java.lang.Class.privateGetDeclaredFields(Class.java:2583)
>>> > at java.lang.Class.getDeclaredFields(Class.java:1916)
>>> > at org.apache.geode.internal.size.ReflectionSingleObjectSizer.s
>>> izeof(ReflectionSingleObjectSizer.java:98)
>>> > at org.apache.geode.internal.size.ReflectionSingleObjectSizer.s
>>> izeof(ReflectionSingleObjectSizer.java:79)
>>> > at org.apache.geode.internal.size.ReflectionSingleObjectSizer.s
>>> izeof(ReflectionSingleObjectSizer.java:47)
>>> > at org.apache.geode.internal.size.CachingSingleObjectSizer.size
>>> of(CachingSingleObjectSizer.java:38)
>>> > at org.apache.geode.internal.size.ObjectGraphSizer$SizeVisitor.
>>> visit(ObjectGraphSizer.java:222)
>>> > at org.apache.geode.internal.size.ObjectTraverser$VisitStack.
>>> add(ObjectTraverser.java:160)
>>> > at org.apache.geode.internal.size.ObjectTraverser.doSearch(Obje
>>> ctTraverser.java:83)
>>> > at org.apache.geode.internal.size.ObjectTraverser.breadthFirstS
>>> earch(ObjectTraverser.java:50)
>>> > at org.apache.geode.internal.size.ObjectGraphSizer.size(ObjectG
>>> raphSizer.java:98)
>>> > at org.apache.geode.internal.size.ReflectionObjectSizer.sizeof(
>>> ReflectionObjectSizer.java:66)
>>> > at org.apache.geode.internal.size.SizeClassOnceObjectSizer.size
>>> of(SizeClassOnceObjectSizer.java:60)
>>> > at org.apache.geode.internal.cache.eviction.SizeLRUController.
>>> sizeof(SizeLRUController.java:68)
>>> > at org.apache.geode.internal.cache.eviction.HeapLRUController.
>>> entrySize(HeapLRUController.java:92)
>>> > at org.apache.geode.internal.cache.entries.VersionedStatsDiskLR
>>> URegionEntryHeapLongKey.updateEntrySize(VersionedStats
>>> DiskLRURegionEntryHeapLongKey.java:207)
>>> > at org.apache.geode.internal.cache.VMLRURegionMap.beginChangeVa
>>> lueForm(VMLRURegionMap.java:178)
>>> > at org.apache.geode.internal.cache.VMCachedDeserializable.getDe
>>> serializedValue(VMCachedDeserializable.java:119)
>>> > at org.apache.geode.internal.cache.TXEntryState.getValue(TXEntr
>>> yState.java:468)
>>> > at org.apache.geode.internal.cache.TXState.getDeserializedValue
>>> (TXState.java:1522)
>>> > at org.apache.geode.internal.cache.TXStateProxyImpl.getDeserial
>>> izedValue(TXStateProxyImpl.java:315)
>>> > at org.apache.geode.internal.cache.LocalRegion.get(LocalRegion.
>>> java:1384)
>>> > at org.apache.geode.internal.cache.LocalRegion.get(LocalRegion.
>>> java:1334)
>>> > at org.apache.geode.internal.cache.LocalRegion.get(LocalRegion.
>>> java:1319)
>>> > at org.apache.geode.internal.cache.AbstractRegion.get(AbstractR
>>> egion.java:408)
>>> > at org.rdb.geode.session.object.GeodeObjectStore.loadFromRegion
>>> (GeodeObjectStore.java:333)
>>> > at org.rdb.geode.session.object.GeodeObjectStore.loadFieldsFrom
>>> Geode(GeodeObjectStore.java:238)
>>> > at org.rdb.geode.session.object.GeodeObjectStore.loadFields(Geo
>>> deObjectStore.java:157)
>>> > at org.rdb.geode.session.object.GeodeObjectStore.mapperLoad(Geo
>>> deObjectStore.java:198)
>>> > at org.rdb.geode.session.object.GeodeObjectStore.load(GeodeObje
>>> ctStore.java:185)
>>> > at org.rdb.geode.session.GeodeDatabaseSession.load(GeodeDatabas
>>> eSession.java:80)
>>> > at org.rdb.geode.server.functions.validation.ValidateAllRegions
>>> Function.execute(ValidateAllRegionsFunction.java:106)
>>> > at org.apache.geode.internal.cache.tier.sockets.command.Execute
>>> Function66.executeFunctionaLocally(ExecuteFunction66.java:332)
>>> > at org.apache.geode.internal.cache.tier.sockets.command.Execute
>>> Function66.cmdExecute(ExecuteFunction66.java:257)
>>> > at org.apache.geode.internal.cache.tier.sockets.command.Execute
>>> Function70.cmdExecute(ExecuteFunction70.java:54)
>>> > at org.apache.geode.internal.cache.tier.sockets.BaseCommand.
>>> execute(BaseCommand.java:164)
>>> > at org.apache.geode.internal.cache.tier.sockets.ServerConnectio
>>> n.doNormalMsg(ServerConnection.java:869)
>>> > at org.apache.geode.internal.cache.tier.sockets.OriginalServerC
>>> onnection.doOneMessage(OriginalServerConnection.java:77)
>>> > at org.apache.geode.internal.cache.tier.sockets.ServerConnectio
>>> n.run(ServerConnection.java:1217)
>>> > at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPool
>>> Executor.java:1149)
>>> > at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoo
>>> lExecutor.java:624)
>>> > at org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$4$
>>> 1.run(AcceptorImpl.java:644)
>>> > at java.lang.Thread.run(Thread.java:748)
>>> > Caused by: java.lang.ClassNotFoundException:
>>> org.eclipse.jetty.server.Server
>>> > at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>>> > at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>>> > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
>>> > at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>>> > ... 44 more
>>> >
>>> >
>>> > I checked and none of our classes use Jetty.
>>> > I was wondering if it could be related to packages that should be
>>> excluded from being tried to serialize/deserialize?
>>> > Maybe related to: https://issues.apache.org/jira/browse/GEODE-4822
>>> >
>>> > Versions:
>>> >
>>> > compile 'org.springframework.data:spring-data-geode:2.1.0.BUILD-SNAP
>>> SHOT'
>>> > compile group: 'org.apache.geode', name: 'geode-core', version:
>>> '1.7.0-SNAPSHOT'
>>> >
>>> >
>>> > Configs:
>>> >
>>> > <util:properties id="gemfire-props">
>>> >     <prop key="log-level">info</prop>
>>> >     <prop key="locators">pvz-dell.lautus.net[10334]</prop>
>>> >     <prop key="start-locator">pvz-dell.lautus.net[10334]</prop>
>>> >     <!--<prop key="start-locator">>pvz-dell.lautus.net
>>> [10335]</prop>-->
>>> >     <prop key="mcast-port">0</prop>
>>> >     <prop key="http-service-port">0</prop>
>>> >
>>> >     <prop key="jmx-manager">true</prop>
>>> >     <prop key="jmx-manager-port">1099</prop>
>>> >     <prop key="jmx-manager-start">true</prop>
>>> >     <!--<prop key="jmx-manager-ssl">true</prop>-->
>>> >     <!--<prop key="jmx-manager-http-port">8080</prop>-->
>>> > </util:properties>
>>> >
>>> > <!-- copy-on-read: https://gemfire.docs.pivotal.i
>>> o/geode/basic_config/data_entries_custom_classes/managing_
>>> data_entries.html-->
>>> > <gfe:cache properties-ref="gemfire-props"
>>> pdx-serializer-ref="pdxSerializer" pdx-persistent="true"
>>> >            pdx-disk-store="pdx-disk-store"
>>> eviction-heap-percentage="70" critical-heap-percentage="80"
>>> >            id="gemfireCache"/>
>>> >
>>> > <!--&lt;!&ndash; Note the SpEL expression here used to dynamically
>>> configure an available port in the given range &ndash;&gt;-->
>>> > <!--<gfe:cache-server port="40404"/>-->
>>> >
>>> > <gfe:cache-server port="40404" socket-buffer-size="10000000"
>>> max-threads="200"
>>> >                   bind-address="pvz-dell.lautus.net"/>
>>> >
>>> > <!--<gfe:transaction-manager id="txManager"/>-->
>>> >
>>> > <gfe:transaction-manager id="gemfireTransactionManager"
>>> cache-ref="gemfireCache"/>
>>> >
>>> >
>>> > <bean id="pdxSerializer" class="org.rdb.geode.mapping.R
>>> DBGeodeSerializer2">
>>> >     <constructor-arg value="org.rdb.*,net.lautus.*"/>
>>> > </bean>
>>> >
>>> >
>>> > public class RDBGeodeSerializer2
>>> >         extends ReflectionBasedAutoSerializer
>>> >
>>> >
>>> >
>>> > <gfe:replicated-region id="net.lautus.gls.domain.comm
>>> on.validation.BusinessRuleValidator"
>>> >                        disk-store-ref="tauDiskStore" statistics="true"
>>> persistent="true" scope="distributed-no-ack"
>>> >                        enable-async-conflation="true"
>>> >                        enable-subscription-conflation="true">
>>> <!--<gfe:cache-listener ref="cacheListener"/>-->
>>> >     <gfe:eviction type="HEAP_PERCENTAGE" action="OVERFLOW_TO_DISK"/>
>>> > </gfe:replicated-region>
>>>
>>>
>
>
> --
> -John
> john.blum10101 (skype)
>

Reply via email to