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.

Bug 60384 - Memory storage: Different instances of NBMDRepositoryImpl are not independant
Summary: Memory storage: Different instances of NBMDRepositoryImpl are not independant
Status: RESOLVED INVALID
Alias: None
Product: java
Classification: Unclassified
Component: Unsupported (show other bugs)
Version: 5.x
Hardware: PC Windows XP
: P3 blocker (vote)
Assignee: Martin Matula
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-06-22 13:23 UTC by rfreude
Modified: 2005-09-05 10:05 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description rfreude 2005-06-22 13:23:45 UTC
If two independant instances of NBMDRepositoryImpl create an extend with 
instanciating MOF an exception occurrs (only with memory storage - with btree 
storage it works): 

HashMap args;

// First Repository
args = new HashMap();
args.put
("storage", "org.netbeans.mdr.persistence.memoryimpl.StorageFactoryImpl");
args.put(BtreeFactory.STORAGE_FILE_NAME, "first");
MDRepository repository1 = new NBMDRepositoryImpl(_args);

// Second Repository
args = new HashMap();
args.put
("storage", "org.netbeans.mdr.persistence.memoryimpl.StorageFactoryImpl");
args.put(BtreeFactory.STORAGE_FILE_NAME, "second");
MDRepository repository2 = new NBMDRepositoryImpl(_args);

// Creating extends in both repositories
repository1.createExtent("foo");
repository2.createExtent("bar");

Results in:

java.lang.RuntimeException
	at 
org.netbeans.mdr.persistence.memoryimpl.MultivaluedIndexImpl$MOWrapper.get
(MultivaluedIndexImpl.java:313)
	at java.util.AbstractList$Itr.next(AbstractList.java:421)
	at java.util.AbstractCollection.toArray(AbstractCollection.java:174)
	at org.netbeans.mdr.storagemodel.IndexImmutSet.toArray
(IndexImmutSet.java:97)
	at java.util.ArrayList.<init>(ArrayList.java:136)
	at 
org.netbeans.jmiimpl.mof.model.GeneralizableElementImpl.extendedNamespace
(GeneralizableElementImpl.java:39)
	at 
org.netbeans.jmiimpl.mof.model.GeneralizableElementImpl.lookupElementExtended
(GeneralizableElementImpl.java:99)
	at org.netbeans.lib.jmi.xmi.XmiContext.resolveElementName
(XmiContext.java:570)
	at org.netbeans.lib.jmi.xmi.XmiElement$Content.startSubElement
(XmiElement.java:354)
	at org.netbeans.lib.jmi.xmi.XmiSAXReader.startElement
(XmiSAXReader.java:219)
	at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1637)
	at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
	at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
	at org.apache.crimson.parser.Parser2.content(Parser2.java:1926)
	at org.apache.crimson.parser.Parser2.maybeElement(Parser2.java:1654)
	at org.apache.crimson.parser.Parser2.parseInternal(Parser2.java:634)
	at org.apache.crimson.parser.Parser2.parse(Parser2.java:333)
	at org.apache.crimson.parser.XMLReaderImpl.parse(XMLReaderImpl.java:448)
	at javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
	at org.netbeans.lib.jmi.xmi.XmiSAXReader.read(XmiSAXReader.java:136)
	at org.netbeans.lib.jmi.xmi.XmiSAXReader.read(XmiSAXReader.java:107)
	at org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read
(XMISaxReaderImpl.java:58)
	at org.netbeans.lib.jmi.xmi.XMISaxReaderImpl.read
(XMISaxReaderImpl.java:51)
	at org.netbeans.mdr.NBMDRepositoryImpl.installPureMof
(NBMDRepositoryImpl.java:1346)
	at org.netbeans.mdr.NBMDRepositoryImpl.boot
(NBMDRepositoryImpl.java:1316)
	at org.netbeans.mdr.NBMDRepositoryImpl.initCheck
(NBMDRepositoryImpl.java:749)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:445)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:287)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:275)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:264)

...

[org.netbeans.mdr.Logger] INFORMATIONAL *********** Exception occurred 
************ at Wed Jun 22 14:05:39 CEST 2005
org.netbeans.mdr.util.DebugException: Boot failed.
	at org.netbeans.mdr.NBMDRepositoryImpl.installPureMof
(NBMDRepositoryImpl.java:1349)
	at org.netbeans.mdr.NBMDRepositoryImpl.boot
(NBMDRepositoryImpl.java:1316)
	at org.netbeans.mdr.NBMDRepositoryImpl.initCheck
(NBMDRepositoryImpl.java:749)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:445)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:287)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:275)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:264)

...

ANNOTATIONS:
[null] Exception occurred:
org.netbeans.mdr.util.DebugException: Missing storage files or different 
storage version.
	at org.netbeans.mdr.storagemodel.MdrStorage.initializeIndexes
(MdrStorage.java:507)
	at org.netbeans.mdr.storagemodel.MdrStorage.rollback
(MdrStorage.java:554)
	at org.netbeans.mdr.util.TransactionMutex.end(TransactionMutex.java:73)
	at org.netbeans.mdr.util.MultipleReadersMutex.leave
(MultipleReadersMutex.java:173)
	at org.netbeans.mdr.NBMDRepositoryImpl.endTrans
(NBMDRepositoryImpl.java:248)
	at org.netbeans.mdr.NBMDRepositoryImpl.boot
(NBMDRepositoryImpl.java:1322)
	at org.netbeans.mdr.NBMDRepositoryImpl.initCheck
(NBMDRepositoryImpl.java:749)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:445)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:287)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:275)
	at org.netbeans.mdr.NBMDRepositoryImpl.createExtent
(NBMDRepositoryImpl.java:264)
...
Comment 1 Martin Matula 2005-06-28 17:50:38 UTC
I've looked at the code and it seems it should work when you set a different
STORAGE_ID for these different repositories. The storage ID serves as the prefix
of MOF IDs generated by the storage.
To set them, replace BtreeFactory.STORAGE_FILE_NAME with
StorageFactoryImpl.STORAGE_ID in your code.

Please reopen this issue if it does not work and provide the log as an attachment.