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"/> >>> > >>> > <!--<!– Note the SpEL expression here used to dynamically >>> configure an available port in the given range –>--> >>> > <!--<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) >
