This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
I wish to remove all model extents from the MDR. I do this as follows: - Use MDRepository.getExtentNames() to get an array of extent names from the MDR. - For each of these extent names I try to get the extent using MDRepository.getExtent(String) to get a RefPackage object - On each RefPackage object I execute refDelete() This works fine on some extents, but throws an exception on others. It seems that not all extent names returned from getExtentNames() are valid i.e. some of the names are stale and have no representation in the underlying MDR storage. All extent names have been created somewhere earlier in processing, but there may not be any valid java references to these extents at the time of exception. The extents that do delete propertly either have a reference within the executing class, or a static reference in another class. (Is this a problem with garbage collection of extents references?) Test Code fragment ================== System.out.println("MdrApmlPackageManager: testCleanPackages()"); String[] packageNames = repository.getExtentNames(); for (int i=0;i<packageNames.length; i++) { System.out.println("Package Name:" + packageNames[i]); } System.out.println("Number of packages to delete: " + packageNames.length); for (int i=0;i<packageNames.length;i++) { System.out.println("Deleting package: " + packageNames [i]); repository.getExtent(packageNames[i]).refDelete(); } Exception raised ================ [java] [junit] MdrApmlPackageManager: testCleanPackages() [java] [junit] Package Name:testPopulateModel [java] [junit] Package Name:MyModel [java] [junit] Package Name:testCreateModel [java] [junit] Package Name:testModel [java] [junit] Package Name:testGetModel [java] [junit] Package Name:LoadedModel [java] [junit] Number of packages to delete: 6 [java] [junit] Deleting package: testPopulateModel [java] [junit] Deleting package: MyModel [java] [junit] org.netbeans.mdr.util.DebugException: Exception: No reco rd exists with key 5E432679-AA6E-11D6-9749- 2264B1C6AA77:0000000000005AE0 [java] [junit] at org.netbeans.mdr.storagemodel.StorableFeature d.read(StorableFeatured.java:217) [java] [junit] at org.netbeans.mdr.storagemodel.StorableObject. read(StorableObject.java:284) [java] [junit] at org.netbeans.mdr.persistence.btreeimpl.btrees torage.BtreeDatabase.getRecord(BtreeDatabase.java:969) [java] [junit] at org.netbeans.mdr.persistence.btreeimpl.btrees torage.BtreeDatabase.getIfExists(BtreeDatabase.java:720) [java] [junit] at org.netbeans.mdr.persistence.btreeimpl.btrees torage.BtreeDatabase.getIfExists(BtreeDatabase.java:700) [java] [junit] at org.netbeans.mdr.persistence.btreeimpl.btreei ndex.MOFIDInfo.objectFromBuffer(MOFIDInfo.java:102) [java] [junit] at org.netbeans.mdr.persistence.btreeimpl.btreei ndex.BtreeListByKey$BtreeListByKeyIterator.getCurrentItem (BtreeListByKey.java:19 7) [java] [junit] at org.netbeans.mdr.persistence.btreeimpl.btreei ndex.BtreeListByKey$BtreeListByKeyIterator.next (BtreeListByKey.java:128) [java] [junit] at java.util.AbstractCollection.toArray(Abstract Collection.java:170) [java] [junit] at org.netbeans.mdr.storagemodel.IndexImmutSet.t oArray(IndexImmutSet.java:74) [java] [junit] at java.util.ArrayList.<init>(ArrayList.java:132 ) [java] [junit] at org.netbeans.mdr.storagemodel.StorableClass.d eleteRecursive(StorableClass.java:357) [java] [junit] at org.netbeans.mdr.storagemodel.StorablePackage .deleteRecursive(StorablePackage.java:165) [java] [junit] at org.netbeans.mdr.storagemodel.StorablePackage .delete(StorablePackage.java:145) [java] [junit] at org.netbeans.mdr.handlers.PackageProxyHandler .refDelete(PackageProxyHandler.java:315) [java] [junit] at net.agentis.jmi.apml.mdr.MdrApmlPackageManage r_Test.testCleanPackages (MdrApmlPackageManager_Test.java:115) [java] [junit] at sun.reflect.NativeMethodAccessorImpl.invoke0( Native Method) [java] [junit] at sun.reflect.NativeMethodAccessorImpl.invoke(N ativeMethodAccessorImpl.java:39) [java] [junit] at sun.reflect.DelegatingMethodAccessorImpl.invo ke(DelegatingMethodAccessorImpl.java:25) [java] [junit] at java.lang.reflect.Method.invoke(Method.java:3 24) [java] [junit] at junit.framework.TestCase.runTest(TestCase.jav a:166) [java] [junit] at junit.framework.TestCase.runBare(TestCase.jav a:140) [java] [junit] at junit.framework.TestResult$1.protect(TestResu lt.java:106) [java] [junit] at junit.framework.TestResult.runProtected(TestR esult.java:124) [java] [junit] at junit.framework.TestResult.run(TestResult.jav a:109) [java] [junit] at junit.framework.TestCase.run(TestCase.java:13 1) [java] [junit] at junit.framework.TestSuite.runTest(TestSuite.j ava:173) [java] [junit] at junit.framework.TestSuite.run(TestSuite.java: 168) [java] [junit] at org.apache.tools.ant.taskdefs.optional.junit. JUnitTestRunner.run(JUnitTestRunner.java:231) [java] [junit] at org.apache.tools.ant.taskdefs.optional.junit. JUnitTask.executeInVM(JUnitTask.java:582) [java] [junit] at org.apache.tools.ant.taskdefs.optional.junit. JUnitTask.execute(JUnitTask.java:403) [java] [junit] at org.apache.tools.ant.taskdefs.optional.junit. JUnitTask.execute(JUnitTask.java:380) [java] [junit] at org.apache.tools.ant.Task.perform(Task.java:2 17) [java] [junit] at org.apache.tools.ant.Target.execute(Target.ja va:184) [java] [junit] at org.apache.tools.ant.Target.performTasks(Targ et.java:202) [java] [junit] at org.apache.tools.ant.Project.executeTarget(Pr oject.java:601) [java] [junit] at org.apache.tools.ant.Project.executeTargets(P roject.java:560) [java] [junit] at org.apache.tools.ant.Main.runBuild(Main.java: 454) [java] [junit] at org.apache.tools.ant.Main.start(Main.java:153 ) [java] [junit] at org.apache.tools.ant.Main.main(Main.java:176) [java] [junit] rolled back!
Hi, we know about this bug and it will be fixed soon by the commit that Tomas will made at the beginning of the next week.
This seems to be problem in recursive delete. There was an improvement of recursive delete during the MOFID change. The improvement fixes the case when superclass is deleted before the subclass. This causes the same exception. Could you test it again on the CVS build ?
Fixed during the MOFID storage improvement commit.