[Design of Clustering on JBoss] - Re: JBAS-6089: Disable Client Auto-Discovery By Default?
by galder.zamarreno@jboss.com
There's a user that has been having issues with auto discovery being enabled by default. They had a rogue server that was responding to auto discovery requests even though it shouldn't have. Obviously, this rogue server was not using -u and clients auto discovery were finding it (clients used default jnp.discoveryPort)
I suggested this used to use jnp.DisableDiscovery but it's too big of a change for him as you'd need to change all client look up parameters or property files from which lookup properties are loaded.
The other possible solution would be to have a system property that changes the default value for DisableDiscovery for that VM. This would be different to the per initial context creation jnp.DisableDiscovery property that we have now. Thoughts? For this particular user, I think this could make it easier to disable auto discovery.
Finally note that I'm not sure we should be changing default because if we do so, we'll be annoying other customers relying on it being enabled by default. We're never gonna be able to make everyone happy with this.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4220145#4220145
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4220145
17 years
[Design the new POJO MicroContainer] - Re: Context installation causes StackOverflowError
by jaikiran
To show the state change, i changed the number of POJOs being installed to a small number (=3) and added some loggers in the POJOs:
SimplePOJO
public void start() throws Throwable
| {
| logger.info("Start of " + this);
| BeanMetaDataBuilder bmdb = BeanMetaDataBuilder.createBuilder("StringDummy" + this, String.class.getName());
|
| // Set access mode
| bmdb.setAccessMode(BeanAccessMode.ALL);
| logger.info(this + " is now going to install a String");
| this.kernel.getController().install(bmdb.getBeanMetaData(), new String("dummy"));
| logger.info(this + " successfully installed the String");
| }
|
|
OtherPOJO
| public void start() throws Throwable
| {
| logger.info("Start of " + this);
|
| BeanMetaDataBuilder bmdb = BeanMetaDataBuilder.createBuilder("OtherDummy" + this, String.class.getName());
|
| // Set access mode
| bmdb.setAccessMode(BeanAccessMode.ALL);
| logger.info(this + " is going to install a String");
| this.kernel.getController().install(bmdb.getBeanMetaData(), new String("otherdummy"));
| logger.info(this + " successfully installed the string");
| }
|
|
| And here's the output:
| Line 1 - [SimplePOJO] Start of SimplePOJO1
| Line 2 - [SimplePOJO] SimplePOJO1 is now going to install a String
| Line 3 - [SimplePOJO] Start of SimplePOJO2
| Line 4 - [SimplePOJO] SimplePOJO2 is now going to install a String
| Line 5 - [OtherPOJO] Start of OtherPOJO
| Line 6 - [OtherPOJO] OtherPOJO is going to install a String
| Line 7 - [OtherPOJO] OtherPOJO successfully installed the string
| Line 8 - [SimplePOJO] SimplePOJO2 successfully installed the String
| Line 9 - [SimplePOJO] SimplePOJO1 successfully installed the String
|
As can be seen, after Line 2 (the point where SimplePOJO1 tries to install a String), Line 3 shows that the start of (an unrelated context) SimplePOJO2 is invoked. The SimplePOJO2 will then try to install another string but that internally triggers a state change on (another unrelated context) OtherPOJO and so on...
On Line 3 i would have expected the output that you are seeing on Line 9. i.e. the install of the String happens and returns immidiately without any state changes to other (unrelated) contexts.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4220041#4220041
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4220041
17 years
[Design the new POJO MicroContainer] - Re: Context installation causes StackOverflowError
by jaikiran
"alesj" wrote :
| I don't see how this is different from what we already have
| once our -jboss-beans.xml defined beans reach number 300+.
Let's take out EJB3 from the equation and make it a plain MC example :)
Here's a plain MC version of an application which reproduces this StackOverFlowError:
MC bean:
// N (>=400) instances of this SimplePOJO
| // will be installed into the MC through a deployer (TestDeployer)
| public class SimplePOJO
| {
|
| private Logger logger = Logger.getLogger(SimplePOJO.class);
|
| private Kernel kernel;
|
| private String name;
|
| private OtherPOJO otherBean;
|
| public SimplePOJO()
| {
|
| }
| public SimplePOJO(String name)
| {
| this.name = name;
| }
|
| public void create()
| {
| logger.info("Create of " + this);
| }
|
| // Installs a java.lang.String as a MC bean
| public void start() throws Throwable
| {
| logger.info("Start of " + this);
|
| // let's just build a MC bean for a "String" object and "install" it
| BeanMetaDataBuilder bmdb = BeanMetaDataBuilder.createBuilder("StringDummy" + this, String.class.getName());
|
| // Set access mode
| bmdb.setAccessMode(BeanAccessMode.ALL);
|
| // install
| this.kernel.getController().install(bmdb.getBeanMetaData(), new String("dummy"));
|
| logger.info("Installed the dummy String, from the start() method of " + this);
| }
|
| public Kernel getKernel()
| {
| return kernel;
| }
|
| @Inject(bean="jboss.kernel:service=Kernel")
| public void setKernel(Kernel kernel)
| {
| this.kernel = kernel;
| }
|
| public String toString()
| {
| return this.name;
| }
|
| public OtherPOJO getOtherBean()
| {
| return otherBean;
| }
|
| // let's inject some other MC bean
| // This is a very important @Inject to reproduce this issue
| // Read the comments in the post for more details
| @Inject
| public void setOtherBean(OtherPOJO otherBean)
| {
| this.otherBean = otherBean;
| }
| }
|
One more MC bean:
// Only one instance of this OtherPOJO will be installed
| // into MC through the TestDeployer. We could have installed
| // more instances of this OtherPOJO into MC, but let's not
| // complicate this reproducible example.
| public class OtherPOJO
| {
| private String name;
|
| private static Logger logger = Logger.getLogger(OtherPOJO.class);
|
| private Kernel kernel;
|
| public OtherPOJO()
| {
|
| }
|
| public OtherPOJO(String name)
| {
| this.name = name;
|
| }
|
| // Installs an object of type java.lang.String into MC
| public void start() throws Throwable
| {
| logger.info("Start of otherpojo " + this);
| // let's install an java.lang.String
| BeanMetaDataBuilder bmdb = BeanMetaDataBuilder.createBuilder("OtherDummy" + this, String.class.getName());
|
| // Set access mode
| bmdb.setAccessMode(BeanAccessMode.ALL);
|
| // install the string
| this.kernel.getController().install(bmdb.getBeanMetaData(), new String("otherdummy"));
|
| logger.info("Installed the otherdummy String from the start() method of " + this);
| }
|
| public String toString()
| {
| return this.name;
| }
|
| public Kernel getKernel()
| {
| return kernel;
| }
|
| @Inject(bean="jboss.kernel:service=Kernel")
| public void setKernel(Kernel kernel)
| {
| this.kernel = kernel;
| }
|
| }
|
|
Here's the deployer which deploys (actually attaches to a unit) 400 (or more) instances of the SimplePOJO and one instance of OtherPOJO (as BMD):
public class TestDeployer extends AbstractDeployer
| {
|
| private static Logger logger = Logger.getLogger(TestDeployer.class);
|
| private boolean haveWeAlreadyDoneOurJob = false;
|
| public TestDeployer()
| {
| setStage(DeploymentStages.REAL);
| // this is just for my convenience in my test setup
| setInput(JBossMetaData.class);
| // we output BMD
| setOutput(BeanMetaData.class);
|
| }
|
| public void deploy(DeploymentUnit unit) throws DeploymentException
| {
| // let's do this only once
| if (haveWeAlreadyDoneOurJob)
| {
| logger.info("TestDeployer is NOT going to do any processing");
| return;
| }
| this.haveWeAlreadyDoneOurJob = true;
|
| String name = "Bean";
| int i = 0;
| // create 400 instances of SimplePOJO
| for (i = 0; i < 400 ; i++)
| {
| BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(name + i, SimplePOJO.class.getName());
| builder.setConstructorValue(new SimplePOJO(name + i));
| unit.addAttachment(BeanMetaData.class + ":" + name + i, builder.getBeanMetaData());
| }
| logger.info("Number of beans added to attachment: " + i);
|
| // create one instance of OtherPOJO
| BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder("OtherBean", OtherPOJO.class.getName());
| builder.setConstructorValue(new OtherPOJO("otherbean"));
| unit.addAttachment(BeanMetaData.class + ":" + "otherbean", builder.getBeanMetaData());
| }
|
| }
|
|
And here's (only a small portion of a very long stacktrace):
2009-03-21 17:12:41,288 ERROR [org.jboss.kernel.plugins.dependency.AbstractKernelController] Error installing to PreInstall: name=StringDummyBean13 state=Real
| java.lang.StackOverflowError
| at java.lang.StringBuffer.setLength(StringBuffer.java:153)
| at org.apache.log4j.PatternLayout.format(PatternLayout.java:497)
| at org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:301)
| at org.apache.log4j.WriterAppender.append(WriterAppender.java:159)
| at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:230)
| at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:65)
| at org.apache.log4j.Category.callAppenders(Category.java:203)
| at org.apache.log4j.Category.forcedLog(Category.java:388)
| at org.apache.log4j.Category.log(Category.java:853)
| at org.jboss.logging.log4j.Log4jLoggerPlugin.trace(Log4jLoggerPlugin.java:106)
| at org.jboss.logging.Logger.trace(Logger.java:160)
| at org.jboss.kernel.plugins.dependency.AbstractMetaDataVisitor.internalDescribeVisit(AbstractMetaDataVisitor.java:125)
| at org.jboss.kernel.plugins.dependency.AbstractMetaDataVisitor.describeVisit(AbstractMetaDataVisitor.java:87)
| at org.jboss.beans.metadata.plugins.AbstractFeatureMetaData.describeVisit(AbstractFeatureMetaData.java:106)
| at org.jboss.kernel.plugins.dependency.DescribedMetaDataVisitor.run(DescribeMetaDataVisitor.java:53)
| at java.security.AccessController.doPrivileged(Native Method)
| at org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.infoprocessMetaData(AbstractKernelControllerContext.java:226)
| at org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.setBeanInfo(AbstractKernelControllerContext.java:157)
| at org.jboss.kernel.plugins.dependency.PreInstallAction.installActionInternal(PreInstallAction.java:91)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchExecutionWrapper(KernelControllerContextAction.java:109)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:70)
| at org.jboss.kernel.plugins.dependency.LifecycleAction.installActionInternal(LifecycleAction.java:221)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54)
| at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42)
| 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.dependency.plugins.AbstractController.install(AbstractController.java:1598)
| at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062)
| at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:774)
| at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:540)
| at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:106)
| at org.jboss.ejb3.nointerface.deployers.SimplePOJO.start(SimplePOJO.java:67)
| at sun.reflect.GeneratedMethodAccessor49.invoke(Unknown Source)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:597)
| at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:59)
| at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:150)
| at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66)
| at org.jboss.kernel.plugins.dependency.KernelControllerContextAction$JoinpointDispatchWrapper.execute(KernelControllerContextAction.java:241)
| at org.jboss.kernel.plugins.dependency.ExecutionWrapper.execute(ExecutionWrapper.java:47)
| ...
|
|
Bit of explanation of this example:
1) 400 instances of this SimplePOJO are create in the TestDeployer.
2) One instance of OtherPOJO is created in TestDeployer.
3) All 400 instances of SimplePOJO expect the single instance of OtherPOJO to be injected in them. Simple requirement :)
4) Each instance of SimplePOJO in its start "installs" (through the kernel.getController().install API) a instance of java.lang.String.
Note : Intentionally chose a String to show that the object being installed has no dependencies on anything and it was *expected* that install of the String would not trigger a state change on other MC beans. However, MC does this differently and triggers a recursive call leading to StackOverFlowError.
5) Similarly the OtherPOJO in its start "installs" (through the kernel.getController().install API) a instance of java.lang.String
Two *workarounds* :
1) Do not install the java.lang.String in the start method (this call is what is triggering this recursion) of these POJOs.
OR
2) Removing the inject/dependency between SimplePOJO and OtherPOJO does *not* trigger this StackOverFlowError:
public class SimplePOJO
| {
| ...
|
| // @Inject - Commenting this out removes the
| // dependency between SimplePOJO and OtherPOJO
| // and MC treats this differently and is able
| // to process the deployment without any issues
| public void setOtherBean(OtherPOJO otherBean)
| {
| this.otherBean = otherBean;
| }
| }
|
|
P.S: The TestDeployer expects JBossMetaData as input. This is just for my convenience so that i can test it on my setup. If someone wants to try this deployer, then it needs to be changed appropriately or run on a setup where some other deployer generates JBossMetaData as output.
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4220037#4220037
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4220037
17 years
[Design of Messaging on JBoss (Messaging/JBoss)] - Re: Duplicated Messages during failover and NullPersistence
by clebert.suconic@jboss.com
The issue was related to the time-components on the IDs for sure.
I added a test PreserveOrderDuringFailoverTest, which is based on AutomaticFailoverWithDiscoveryTest.
If you uncomment some code on PreserveOrderDuringFailoverTest, this issue will aways happen:
// This test would fail if both servers have the same time component
| // NullStorageManager storageManagerLive = (NullStorageManager)liveService.getServer().getStorageManager();
| // TimeAndCounterIDGenerator idgeneratorlive = (TimeAndCounterIDGenerator)storageManagerLive.getIDGenerator();
| //
| // NullStorageManager storageManagerBackup = (NullStorageManager)backupService.getServer().getStorageManager();
| // TimeAndCounterIDGenerator idgeneratorBackup = (TimeAndCounterIDGenerator)storageManagerBackup.getIDGenerator();
| //
| // idgeneratorBackup.setInternalDate(0);
| // idgeneratorlive.setInternalDate(0);
|
I would expect the IDs not affecting failover any more, so I would debug this but since this part is already changed at Tim's workspace, I will leave this alone.
Tim: If you could please remove the wait on FailoverTestBase during your commit. Since you have changed the ID logic, we won't need the wait any more.
| backupService.start();
|
| - Thread.sleep(20);
|
| Configuration liveConf = new ConfigurationImpl();
|
View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4219995#4219995
Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4219995
17 years