[jboss-dev-forums] [Design of Management Features on JBoss] - ManagedObject nameType not used in keys

bstansberry@jboss.com do-not-reply at jboss.com
Tue May 19 00:54:39 EDT 2009


I've been trying to figure out why the ClusterPartitionManagedObjectTestCase is failing[1]. Started failing about 10 days ago.

Problem is 2 beans (HAPartition and DistributedReplicantManager) in the same hapartition-jboss-beans.xml have the same MO name, which is the -g value, by default DefaultPartition. They have different nameType values, so their full names are different, but the full names aren't used in a critical place.

Traced the problem to this in KernelDeploymentManagedObjectCreator.build(...):

  |                      // The component managed objects need to be in the root map
  |                      ManagedObject compMO = (ManagedObject) gv.getValue();
  |                      // Use the ManagedObject name if it's not the same as the attachmentName
  |                      String managedObjectName = compUnit.getName();
  |                      if(compMO != null && compMO.getAttachmentName() != null)
  |                      {
  |                         managedObjectName = compMO.getAttachmentName().equals(compMO.getName()) ?
  |                               compUnit.getName() : compMO.getName();
  |                      }
  |                      // Add the managed object 
  |                      managedObjects.put(managedObjectName, compMO);

The "managedObjectName" that is the key in the map is just the plain MO.name, not qualified by the nameType.  As a result the DistributedReplicantManager replaces the HAPartition in the map, so there is no HAPartition ManagedComponent visible and the test fails. (The map ends up being passed to ManagedDeploymentImpl's c'tor.)

>From my review, I don't see any reason this map key couldn't be name/nameType; i.e. I don't see it breaking anything.  Looking at the usage of ManagedDeployment in my AS workspace:

1) No one uses public Set getManagedObjectNames();
2) There are a couple calls to public Map<String, ManagedObject> getManagedObjects(); but they just use the values, other than logging the keys.

3) Drat! Just found that in a couple places AbstractAttachmentStore passes ManagedObject.getName() as the param to  public ManagedObject getManagedObject(String name);  So that would have to be changed. :(


I could try to hack around this, but I really don't want to. The hacks would be too ugly. So I'm just going to push out the JIRA for this https://jira.jboss.org/jira/browse/JBAS-6094.

[1] http://hudson.qa.jboss.com/hudson/view/JBoss%20AS/job/JBoss-AS-5.1.x-testSuite-sun15/297/testReport/org.jboss.test.cluster.defaultcfg.test/ClusterPartitionManagedObjectsTestCase(Default-udp)/testHAPartition/

View the original post : http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4231769#4231769

Reply to the post : http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4231769



More information about the jboss-dev-forums mailing list