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, 2 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, 3 months
New collections
by Manik Surtani
Guys,
I have created 3 new collection impls in trunk - ImmutableListCopy,
ImmutableSetCopy and ImmutableMapCopy. I have also ported the first 2
to branch 2.2.x (the reason why I didnt port the third is because the
MapCopy which it replaces can get serialized and I don't want to break
binary compat).
See the Javadoc of these classes for more details, but in a nutshell
these are very efficient alternatives to the "immutable and
defensively copied" idiom. I.e., if you ever find yourself doing:
return Collections.unmodifiableList(new ArrayList(internalList))
you should consider ImmutableListCopy instead. Constructon time is
about a tenth of the combined time it takes to create an ArrayList and
then wrap it in an UnmodifiableList. Also, iteration is very quick
since the internal array is immutable. Please keep this in mind when
working on JBC code.
Cheers,
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 3 months
Re: Access A Remote JBoss Cache Instance?
by Manik Surtani
TCPCacheServer?
And the "front-end API" could just be another local-mode cache using a
TCPCacheLoader.
cc'ing jbosscache-dev.
On 24 Jul 2008, at 15:42, Jimmy Wilson wrote:
> Grace from Lehman Brothers, one of our most known customers, wants
> to have a JBoss Cache cluster (deployed in the Application Server)
> that remote clients can talk to.
>
> While she could use JMX via the RMIAdapter or even front the cache
> with a SLSB (or anything else of their design), she specifically
> asked did we have the Tangasol functionality whereby the cache just
> becomes a resource that can be accessed from anywhere. I don't know
> anything that would allow her to accomplish that.
>
> I figure that one of you is familiar with Tangasol enough to know
> what she was discussing, and I was curious what you thought about
> said functionality (and if we planned something similar).
>
> Jimmy
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months
REPEATABLE_READ in JBC as Hibernate 2nd Level Cache
by Brian Stansberry
Can anyone see a reason to use REPEATABLE_READ as the JBoss Cache
isolation level in the 2nd level cache use case? I'm not seeing one, and
it certainly hurts performance by forcing cache writes to block waiting
for an earlier tx that did a read to commit.
There are 4 types of data cached:
1) Entities
If an entity is read from the 2LC, for the life of the tx it will be
cached in the Session, so AIUI there should be no second read during the
tx. So no benefit to RR.
2) Collections
Same as entities.
3) Queries
If an application executes a query twice in the same tx, I wouldn't
think they'd expect the same result. In any case, if an update to the
query cache is blocking waiting for a tx that previously read the query
result to release, the existence of the update that means the
underlying entities and their timestamps have changed. So a repeated
read of the cached query will just result in it being discarded as out
of date anyway.
4) Timestamps
Here you don't want an RR semantic. You always want to get the most
up-to-date data.
Anyone see any holes in my thinking?
--
Brian Stansberry
Lead, JBoss AS Clustering
JBoss, a division of Red Hat
16 years, 4 months
2.2.0 going GA
by Manik Surtani
Guys,
Are we ready for 2.2.0 to go GA? Jason, Brian?
Cheers
Manik
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months
Packaging unit tests in distros
by Manik Surtani
We spoke about this briefly on the conf call today - I've created a
JIRA about it here [1].
What do people think? Personally, I think a single distro containing
jars and docs is all we should ship, with a README containing info on
how to check out and run tests from Subversion, and how to download
and run the JBoss Cache GUI Demo.
Comments?
Cheers
Manik
[1] http://jira.jboss.org/jira/browse/JBCACHE-1385
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months
REPEATABLE_READ and write skews
by Manik Surtani
Should write skews be allowed by default? This would be less correct,
but less likely for exceptions being thrown due to concurrent read-
then-write patterns.
What do you guys think?
- Manik
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months
Caching log.isTraceEnabled() as instance variable
by Galder Zamarreno
Hi all,
Yesterday while looking at the JBC code, I spotted that
CommandInterceptor caches log.isTraceEnabled() as instance variable and
that pretty much all classes extending this use it.
In a standalone world, where JBC runs on its own this is fine. However,
when running within AS, log4j settings could change at runtime
(conf/jboss-log4j.xml is hot deployable) and therefore, someone could
enable TRACE logging for org.jboss.cache at runtime which wouldn't have
any effect with the current JBC code.
As far as I can remember, it's generally recommended not to cache things
like this in code running within AS. Then again, I can see how
convenient caching such value is rather than calling
log.isTraceEnabled() all the time. I doubt using an instance variable or
calling log.isTraceEnabled() would have a real impact performance wise
when TRACE is not enabled.
Thinking about this, I wonder whether any callback(s) could be
implemented when the log4j settings are updated after a hot deployment
and within this callback, update interceptors' trace settings...
Thoughts?
--
Galder Zamarreño
Sr. Software Maintenance Engineer
JBoss, a division of Red Hat
16 years, 4 months
Re: [jbosscache-dev] Freeze on docs in trunk
by Manik Surtani
Once Samson has confirmed the new format we can make these changes
there. He should be done by today or tomorrow.
We should document these before the alpha.
On 9 Jul 2008, at 13:08, Mircea Markus wrote:
> The configuration file changes should be documented at some point.
> I think we can release an alpha without having all docs updated ?
>
> Manik Surtani wrote:
>> Guys,
>>
>> Please don't make any changes to the docs in trunk - Samson is
>> having a look at changing this structure to suit his i18n processes.
>>
>> Cheers
>> --
>> Manik Surtani
>> Lead, JBoss Cache
>> manik(a)jboss.org
>>
>>
>>
>>
>>
>>
>> _______________________________________________
>> jbosscache-dev mailing list
>> jbosscache-dev(a)lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/jbosscache-dev
--
Manik Surtani
Lead, JBoss Cache
manik(a)jboss.org
16 years, 4 months