[mapguide-internals] MapGuide -MgServerDescribeSchema::DescribeSchema

Ronnie Louie ronnie.louie at autodesk.com
Fri Jun 15 13:07:13 EDT 2007

Hi Haris,

I took a look at this today, and at first glance it does look rather
cumbersome to get the original schema, remove the class, add to a
temporary schema, serialize, remove from temporary schema, add back to
original schema.

It seems the reason behind this is that a class can have only one parent
object (schema) at a time.  Because the class is moved to a temporary
schema for serialization, it must be removed from the original parent
schema before it can be added to the temporary one.  Same goes for when
it is returned back to the original.

I will see if there is a better way to do this, such that the original
schema does not need to be modified.  I will let you know my findings.


-----Original Message-----
From: mapguide-internals-bounces at lists.osgeo.org
[mailto:mapguide-internals-bounces at lists.osgeo.org] On Behalf Of Haris
Sent: Friday, June 15, 2007 7:57 AM
To: MapGuide Internals Mail List
Subject: [mapguide-internals] MapGuide

After many, many hours of breaking our heads we found what is causing
problems with our multi-user concurrent feature edits. 

I would appreciate if someone would discuss about this what we found.


The problem was when executing MgServerDescribeSchema::DescribeSchema.

While transfering classes from FDO schema collection to MapGuide it is
calling MgServerGetFeatures::GetMgClassDefinition in a for-loop for
every class.

GetMgClassDefinition will seralize class to XML. But serialazing is done
in a way that new temporary schema is created and than class is removed
from original schema , put to temporary, temporary schema serialized and
class returned to original class collection.

And if in that proccess another thread is doing describe schema it is
error and exception and...


This is more obvious in a case of edits because after every edit (
insert/update/delete ) cache is cleared and DescribeSchema is called


I believe that describe schema should work differently, when doing "get
class" it shouldn't change original schema list ( temporary removes
class from list).


I would like if someone would talk to me about this findings.


Thank you,



mapguide-internals mailing list
mapguide-internals at lists.osgeo.org

More information about the mapguide-internals mailing list