Hi, everyone. I made a test for GT MDS4 about the information collection of
cluster in Grid via Ganglia Information Provider. I'm sure everything is
well configured. I found there would be a WARN in container.log, which is
similar to the description of
http://www.mail-archive.com/[email protected]/msg02071.html, that is:

WARN  transforms.GLUEComputeElementTransform
[...] Exception while trying to deserialize GLUE
input: org.globus.wsrf.encoding.DeserializationException: Deserialization
failed [Caused by: org.xml.sax.SAXException]
Ithought there should be something wrong with glue transformer (i.e., from
ganglia output to GLUE schema), and I used DEBUG mode but couldn't find the
bug. Because according to the source code of GT, I think, when I start the
globus-ws-java-container, the MDS will start to work with information
provider.
 And in Class *
org.globus.mds.usefulrp.rpprovider.transforms.GLUEComputeElementTransform* :

*// for now we are going to deserialize this into a ClusterCollectionType
        // automatically, just like the GT4.0.x
GlueResourceProperty.clusterListener
        ClusterCollectionType clusters = null;
        try {
            clusters =
                (ClusterCollectionType) ObjectDeserializer.toObject(
                    resultElement, ClusterCollectionType.class);
        }
        catch (Exception e)
        {
            logger.warn("Exception while trying to deserialize GLUE input: "
+ e);  // this is the WARN message
        }*
 This code segment shows us where the DeserializationException be thrown out
as a warning in logger.

And in Class "*org.globus.wsrf.encoding.ObjectDeserializer*" :
*/**
     * Converts a DOM Element object into a Java object.
     * The type of the Java object will be determined from the
<i>xsi:type</i>
     * attribute of the specified element.
     * <br><b>Note:</b> **This operation is slow as it converts the DOM
Element
     * into a string which then is deserialized into a Java object.
     */
    public static Object toObject(Element element)
        throws DeserializationException {
        return toObject(element, null);
    }*
*    /**
     * Converts a DOM Element object into a Java object.
     * <br><b>Note:</b> **This operation is slow as it converts the DOM
Element
     * into a string which then is deserialized into a Java object.
     */
    public static Object toObject(Element element, Class javaClass)
        throws DeserializationException {
        ObjectDeserializationContext deserializer
            = new ObjectDeserializationContext(element, javaClass);
        try {
            deserializer.parse();
        } catch (Exception e) {
            throw new DeserializationException(
                i18n.getMessage("genericDeserializationError"), e);
        }
        return deserializer.getValue();
    }*


And, on the other hand, I found that, the MDS will show me the correct
cluster infos after several mins (I didnot test the time, maybe 20 mins
around). So, I can only speculate the WARN is casued by this
operation----converting DOM element into a string. This operation will be
slow. And if it is slow, the MDS4 could not get information from Ganglia in
good time; if MDS4 could not get enough information, we could not see them
from WEBMDS, or get them to other operation, e.g. to host/resource discovery
in GridWay. That's why we will find the "gwhost" command in GridWay shows us
many NULL values sometimes.


Is it the reason? How could I do to improve this thing? Should the WARN be
normal and I could neglect it? I wanna know how long will be enough for the
communication between MDS and Ganglia. "enough" means to collect the enough
infos for the display of hosts/resources/clusters in a Grid.

If any misunderstanding or any question, plz talk to me.  Thanks, all.
-- 
Regards,
Elaine CHEN.
PolyU, HK.

Reply via email to