Community
Participate
Working Groups
Very complex description, but lets try :) We have ECore metemodel which consist of plenty of EPackages and many packages have cycling dependencies. This cycling was riced because our model has all references as bidirectional. We are attempting to load such metamodel from serialized form (actually it is loaded on CDO server). Actions are similar to this: 1. first is trigered to load one EPackage 2. after load is iterating through all contents in order to resolve proxies 3. iterating through whole EPackage is triggering method EClass.getEAllStructuralFeatures 4. in method "getEAllStructuralFeatures" is created class EAllStructuralFeaturesList, which in constructor iterates through all structural features and calls for references "!eReference.isContainer()" 5. if opposite is proxy it involves EPackage loading and process goes to the step As a consequence of such complex loading procedure, our model stuck in situation, when "getEAllStructuralFeatures" for super type return 0 size list, just because that this super type is already in "COMPUTATION_IN_PROGRESS" (resolving proxies for opposites in class EAllStructuralFeaturesList)
Created attachment 180306 [details] Lasy initialization for EAllStructuralFeaturesList fields Attached patch. Sorry, but there are no test case.
I'm not comfortable making changes without a test case. Please provide a way of reproducing the problem.
Created attachment 180636 [details] test case This should simulate my original problem, I got on CDO server
Ed, do you need more information regarding this issue?
No, I've just not had the time.
I see exactly what you mean. Your fix looks like a good one. Thanks! I'll try to find time to commit it soon....
The fix is committed to CVS for 2.7.
The fixes are available in a published build.
Try again to resolve as fixed (and available in a build).
Oh, I guess I have to close them!