CacheLoader preload with region based marshalling
by Brian Stansberry
Not sure if this is a bug or not or just misconfiguration that the
JBCACHE-1358 fix exposed.
The cache used for JBAS FIELD granularity web sessions uses region based
marshalling and has a CacheLoader with <preload>/</preload>. Starting
the cache with anything in the persistent store results in failure.
This looks to be the cause of tons of regressions when trying to use
2.2.0.CR2 in AS 5.
The failure:
2008-06-03 21:21:35,363 INFO [org.jboss.cache.RPCManagerImpl] (RMI TCP
Connection(94)-127.0.0.1) Cache local address is 127.0.0.1:35029
2008-06-03 21:21:35,363 DEBUG
[org.jboss.cache.loader.CacheLoaderManager] (RMI TCP
Connection(94)-127.0.0.1) preloading transient state from cache loader
org.jboss.cache.loader.FileCacheLoader@18543c
2008-06-03 21:21:35,365 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,366 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,367 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,368 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,368 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,369 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,369 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,370 DEBUG
[org.jboss.cache.interceptors.ActivationInterceptor] (RMI TCP
Connection(94)-127.0.0.1) no children UnversionedNode[
/JSESSION/localhost/http-scoped-field/__JBossInternal__/lzRERFRa-nr46LmuwOxjeQ__/ATTRIBUTE/TEST_ID/_ID_/5c4o141-11g0p5-fh19wt1g-1-fh1amjdr-tl
data=[__SERIALIZED__, POJOCache.Status, POJOCache.PojoInstance, ]]
2008-06-03 21:21:35,370 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,371 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,371 DEBUG
[org.jboss.cache.marshall.CacheMarshaller210] (RMI TCP
Connection(94)-127.0.0.1) Region does not exist for Fqn null - not using
a context classloader.
2008-06-03 21:21:35,374 ERROR
[org.jboss.web.tomcat.service.deployers.TomcatDeployment] (RMI TCP
Connection(94)-127.0.0.1) Failed to setup clustering, clustering
disabled. Exception:
org.jboss.cache.CacheException: Unable to invoke method public void
org.jboss.cache.loader.CacheLoaderManager.preloadCache() throws
org.jboss.cache.CacheException on object instance
org.jboss.cache.loader.CacheLoaderManager@1427899
at
org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:127)
at
org.jboss.cache.factories.ComponentRegistry$PrioritizedMethod.invoke(ComponentRegistry.java:935)
at
org.jboss.cache.factories.ComponentRegistry.internalStart(ComponentRegistry.java:721)
at
org.jboss.cache.factories.ComponentRegistry.start(ComponentRegistry.java:585)
at
org.jboss.cache.invocation.CacheInvocationDelegate.start(CacheInvocationDelegate.java:268)
at
org.jboss.web.tomcat.service.session.JBossCacheManager.initCacheProxy(JBossCacheManager.java:277)
at
org.jboss.web.tomcat.service.session.JBossCacheManager.init(JBossCacheManager.java:244)
at
org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:375)
at
org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:139)
at
org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:431)
at org.jboss.web.deployers.WebModule.startModule(WebModule.java:112)
at org.jboss.web.deployers.WebModule.start(WebModule.java:90)
at sun.reflect.GeneratedMethodAccessor426.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at
org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206)
at $Proxy35.start(Unknown Source)
at
org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42)
at
org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37)
at
org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62)
at
org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71)
at
org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at
org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:271)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1394)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:786)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:914)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:836)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:674)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:456)
at org.jboss.system.ServiceController.doChange(ServiceController.java:664)
at org.jboss.system.ServiceController.start(ServiceController.java:436)
at
org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:150)
at
org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:108)
at
org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46)
at
org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62)
at
org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50)
at
org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:174)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:970)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:991)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:911)
at
org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348)
at
org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1394)
at
org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:786)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:914)
at
org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:836)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:674)
at
org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:456)
at
org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:594)
at
org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:541)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:812)
at org.jboss.deployment.MainDeployer.redeploy(MainDeployer.java:587)
at sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at sun.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.jboss.jmx.connector.invoker.InvokerAdaptorService.invoke(InvokerAdaptorService.java:270)
at sun.reflect.GeneratedMethodAccessor237.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at
org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:138)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:90)
at
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:140)
at
org.jboss.jmx.connector.invoker.SerializableInterceptor.invoke(SerializableInterceptor.java:74)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:90)
at
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at
org.jboss.invocation.jrmp.server.JRMPProxyFactory.invoke(JRMPProxyFactory.java:179)
at sun.reflect.GeneratedMethodAccessor236.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at
org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668)
at
org.jboss.invocation.jrmp.server.JRMPInvoker$MBeanServerAction.invoke(JRMPInvoker.java:815)
at
org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:416)
at sun.reflect.GeneratedMethodAccessor235.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor409.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.jboss.cache.util.reflect.ReflectionUtil.invokeAccessibly(ReflectionUtil.java:123)
... 101 more
Caused by: org.jboss.cache.CacheException:
java.lang.ClassNotFoundException:
org.jboss.test.cluster.web.DeserializationSensor
at
org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:227)
at
org.jboss.cache.invocation.CacheInvocationDelegate.get(CacheInvocationDelegate.java:360)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:337)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preload(CacheLoaderManager.java:368)
at
org.jboss.cache.loader.CacheLoaderManager.preloadCache(CacheLoaderManager.java:310)
... 105 more
Caused by: java.lang.ClassNotFoundException:
org.jboss.test.cluster.web.DeserializationSensor
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at
org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:207)
at
org.jboss.classloader.spi.base.BaseClassLoaderDomain.loadClass(BaseClassLoaderDomain.java:1009)
at
org.jboss.classloader.spi.base.BaseClassLoader.loadClassFromDomain(BaseClassLoader.java:728)
at
org.jboss.classloader.spi.base.BaseClassLoader.loadClass(BaseClassLoader.java:372)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:242)
at
org.jboss.util.stream.MarshalledValueInputStream.resolveClass(MarshalledValueInputStream.java:62)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1544)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1466)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1699)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1305)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:348)
at
org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:540)
at
org.jboss.cache.marshall.CacheMarshaller200.populateFromStream(CacheMarshaller200.java:750)
at
org.jboss.cache.marshall.CacheMarshaller200.unmarshallHashMap(CacheMarshaller200.java:713)
at
org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:571)
at
org.jboss.cache.marshall.CacheMarshaller200.unmarshallObject(CacheMarshaller200.java:513)
at
org.jboss.cache.marshall.CacheMarshaller200.objectFromObjectStreamRegionBased(CacheMarshaller200.java:202)
at
org.jboss.cache.marshall.CacheMarshaller200.objectFromObjectStream(CacheMarshaller200.java:126)
at
org.jboss.cache.marshall.VersionAwareMarshaller.objectFromObjectStream(VersionAwareMarshaller.java:326)
at
org.jboss.cache.loader.FileCacheLoader.doUnmarshall(FileCacheLoader.java:481)
at
org.jboss.cache.loader.AbstractCacheLoader.regionAwareUnmarshall(AbstractCacheLoader.java:223)
at
org.jboss.cache.loader.FileCacheLoader.loadAttributes(FileCacheLoader.java:434)
at org.jboss.cache.loader.FileCacheLoader.get(FileCacheLoader.java:201)
at
org.jboss.cache.interceptors.CacheLoaderInterceptor.loadData(CacheLoaderInterceptor.java:554)
at
org.jboss.cache.interceptors.CacheLoaderInterceptor.loadNode(CacheLoaderInterceptor.java:481)
at
org.jboss.cache.interceptors.CacheLoaderInterceptor.loadIfNeeded(CacheLoaderInterceptor.java:305)
at
org.jboss.cache.interceptors.CacheLoaderInterceptor.visitGetKeyValueCommand(CacheLoaderInterceptor.java:136)
at
org.jboss.cache.interceptors.ActivationInterceptor.visitGetKeyValueCommand(ActivationInterceptor.java:117)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
at
org.jboss.cache.interceptors.PessimisticLockInterceptor.handleGetKeyValueCommand(PessimisticLockInterceptor.java:310)
at
org.jboss.cache.interceptors.base.PostProcessingCommandInterceptor.visitGetKeyValueCommand(PostProcessingCommandInterceptor.java:228)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
at
org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
at
org.jboss.cache.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:80)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
at
org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
at
org.jboss.cache.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:80)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
at
org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(TxInterceptor.java:266)
at
org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxInterceptor.java:253)
at
org.jboss.cache.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:80)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
at
org.jboss.cache.interceptors.CacheMgmtInterceptor.visitGetKeyValueCommand(CacheMgmtInterceptor.java:75)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
at
org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:158)
at
org.jboss.cache.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:108)
at
org.jboss.cache.commands.AbstractVisitor.visitGetKeyValueCommand(AbstractVisitor.java:80)
at
org.jboss.cache.commands.read.GetKeyValueCommand.acceptVisitor(GetKeyValueCommand.java:72)
at
org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:215)
... 117 more
http://jira.jboss.com/jira/browse/JBCACHE-1009 is a conceptually related
JIRA.
--
Brian Stansberry
Lead, AS Clustering
JBoss, a division of Red Hat
brian.stansberry(a)redhat.com
16 years, 3 months
Fwd: [JBoss JIRA] Resolved: (JBQA-1813) Release JBoss Cache 2.2.0.GA
by Manik Surtani
Thanks, Dominik!
Begin forwarded message:
> From: "Dominik Pospisil (JIRA)" <jira-events(a)lists.jboss.org>
> Date: 29 August 2008 21:52:38 BST
> To: manik.surtani(a)jboss.com
> Subject: [JBoss JIRA] Resolved: (JBQA-1813) Release JBoss Cache
> 2.2.0.GA
>
> Issue (View Online)
> Key: JBQA-1813
> Issue Type: Release
> Status: Resolved
> Priority: Major
> Resolution: Done
> Assignee: Dominik Pospisil
> Reporter: Manik Surtani
>
> Operations
> View all
> View comments
> View history
> Release JBoss Cache 2.2.0.GA
> Updated: 29/Aug/08 04:51 PM Created: 23/Aug/08 02:00 AM Due
> Date: 26/Aug/08 12:00 AM
>
> The following issue has been resolved as DONE.
> Author: Dominik Pospisil
> Date: 29/Aug/08 04:51 PM
> Comment:
> Done. Uploaded on both Maven repo & Sourceforge.
>
> Project: JBoss QA
> Components: JBossCache
>
> Description
> JBoss Cache 2.2.0 has finally been tagged as GA. Tests run clean on
> Hudson.
>
> Please use the following release process:
>
> http://wiki.jboss.org/auth/wiki/en/JBossCache2.1.x_And_Beyond_QA
>
> Regarding AS integration tests, this should be tested against AS 5
> CR1's test suite.
>
> This message was automatically generated by Atlassian JIRA
> Enterprise Edition, Version: 3.12.3-302 - Bug/feature request.
> If you think it was sent incorrectly, contact one of this server's
> administrators.
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 3 months
Configuration Related Changes and Notes
by Jason T. Greene
I committed the following changes:
---------------------------------
- Switched to JBossEntityResolver to support automatic schema discovery
- Updated schema to use urn:jboss:jbosscache-core:config:3.0 namespace
- Corrected simple type pattern for locking scheme
- Modified parser and configs to use the namespace
- Added root element checking to prevent NPEs
I ran these through the full testsuite with no failures, however a
recent commit I had to merge appears to have broken a number of tests
(with or without my changes).
Some outstanding issues:
-----------------------
- Schema validation failures just log errors. Shouldn't they abort
startup? The XML parsing code seems to assume validation was performed
and successful since it doesn't do much itself
- XmlParsingConfigurationRegistry does not use a proper schema!
- LegacyConfigurationTest is testing the new configuration format
instead of the legacy one
- We need to decide on case sensitivity and correct either the schema
(as I did for locking scheme), or update the xslt to lower/upper case
everything
- Not sure what to do about the jgroups section. Right now the configs
put it in the cache namespace, which is not really correct. However
since we don't have a jgroups namespace, I didnt bother qualifying. The
only other option would be to add xmlns="" to the outer jgroups element.
In any case the parser accepts them in any namespace
JAXB
----
IMO, we should think about using JAXB for this in the future. It is
*much* more accurate than hand rolled parsing code, and it's a lot
easier to maintain. It also has very good error handling (you don't even
need to do full schema validation with it). While it does require a jar
under JDK5, it is part of JDK6, so if we added a another dep it would
only be temporary.
--
Jason T. Greene
JBoss, a division of Red Hat
16 years, 4 months
Let's make 3.0 backwards compatible
by Jason T. Greene
One of the headaches we cause our users, include the AS5 clustering
team, is breaking API compatibility on every major release. This is
probably the biggest reason why getting JBC3 into an AS5 release is a
non-option.
See users complaining:
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4171065#4171065
I propose that we make 3.0 100% backwards compatible with JBC 2.x. This
will improve adoption, and means we stand a chance at becoming a part of
an AS5 release. IMO, there is little justification for API changes since
our biggest feature / release goal doesn't require it. Also, since we
have some API impacting features (partitioning, etc) scheduled for the
next major release, it is very possible that we would end up breaking
the API twice.
The biggest API change is the Fqn changes, which while the overloaded
constructors where broken, we don't have to remove them. We can just
mark them as deprecated. Also, while the generics usage doesn't fit the
type, it doesn't really hurt anything, so I think we can just live with
that past design decision.
The other API change I noticed was XmlConfigurationParser. The old one
was renamed to XmlConfigurationParser2x and moved to another package.
The new one was named XmlConfigurationParser. Is this considered a
public API?. If it is then we should make XmlConfigurationParser choose
the appropriate implementation based off of the file format.
--
Jason T. Greene
JBoss, a division of Red Hat
16 years, 4 months
JBC 2.2.0.CR7
by Manik Surtani
What do you guys think? The reason for this is some internal
performance enhancements around immutable collections as well as a
better tuned LockMap for space efficiency.
I could cut this today pending a clean Hudson run.
Cheers,
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months
Updated to commons-logging 1.1.1 (for now...)
by Jason T. Greene
Last night I updated both pojo and core to use a non-ancient
commons-logging release. This fixed a really annoying performance
problem where it enables TRACE logging when your loglevel is set to DEBUG.
Also it fixes CL leaks.
However, I think at some point we should drop commons-logging in favor
of either
a) JDK logging
b) JBoss logging
JBoss logging can use log4j or jdk logging as a backend.
--
Jason T. Greene
JBoss, a division of Red Hat
16 years, 4 months
Let's make 3.0 backwards compatible
by Jorge Morales Pou
Although not a JBoss dev. I am keen on testing and helping out in any effort
on making JBC2.x (or even 3.x) with JBC 1.4.1.
16 years, 4 months
Adapter for backward compat
by Manik Surtani
Branching off on the backward compat thread, what do people think
about an adapter package that could bridge between code written for
1.x and 2.x/3.x jars?
We could create a compat package that offers 1.4 compat interfaces,
and delegates these to a 2.x or 3.x instance. The challenge will be
classloading, but this can be handled internally in this package,
using a separate classloader to load 2.x classes.
Thoughts?
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months
Entity resolution in new config format
by Jason T. Greene
Hey guys,
While trying to get POJO Cache working on 3.0, I noticed that tests
where freezing making an HTTP connection to jboss.org. We likely need a
custom entity resolver like in AS, that would force any use of the
schema url to use a META-INF lookup.
In the meantime I am disabling validation for my test suite.
--
Jason T. Greene
JBoss, a division of Red Hat
16 years, 4 months
Writing parallel-execution-ready test
by Dominik Pospisil
The process of paralellizing JBossCache testsuite is underway and here are
some guidelines to help write new tests which could be ran using parallel
TestNG testsuite runner.
1. Declare the test class as sequential using @Test annotation or
(preferrably) write the test class thread safe so the test methods could be
ran simultaneously.
Example of @Test annotation to be used in a non thread-safe test class:
@Test(groups = {"functional", "transaction", "optimistic"}, sequential = true)
2. In the case the test class needs replicated cache use UnitTestCacheFactory
class to instantiate the cache. The UnitTestCacheFactory will ensure that the
cache will use different mcast_addr and mcast_port than other tests running in
different threads. Also, create the cache configuration before invoking
createCache factory method and pass the configuration as an argument.
Example:
Configuration c = new Configuration();
c.setTransactionManagerLookupClass(DummyTransactionManagerLookup.class.getName());
c.setNodeLockingScheme(Configuration.NodeLockingScheme.OPTIMISTIC);
c.setCacheMode(Configuration.CacheMode.REPL_SYNC);
Cache cache = new UnitTestCacheFactory<Object, Object>().createCache(c,
false));
3. At the end of the test (or test method if not sequential), all the cache
instances must be destroyed. The cleanUp method of the UnitTestCacheFactory
could be used for this purpose. Note that the method relies on the fact that
it is executed in the same thread as the thread in which the cache(s) were
created.
4. That's it!
Thanks,
- Dominik
16 years, 4 months