db4o Developer Community

db4o open source object database, native to Java and .NET
Welcome to db4o Developer Community Sign in | Join
in Search
More Search Options

Bug: ReadOnly mode and class refactorings

Last post 11-18-2008, 08:47 AM by Marek Istvanek. 0 replies.
Sort Posts: Previous Next
  •  11-18-2008, 08:47 AM 52048

    Thinking [*-)] Bug: ReadOnly mode and class refactorings

    I have found a bug dealing with class refactorings and read only database mode.

    When I save a database, refactor saved class and open the database in read only mode and do a query, CachedIoAdapter.ValidateReadOnly throws an exception. Here is the stack trace:

       v Db4objects.Db4o.IO.CachedIoAdapter.ValidateReadOnly()
       v Db4objects.Db4o.IO.CachedIoAdapter.Write(Byte[] buffer, Int32 length)
       v Db4objects.Db4o.Internal.IoAdaptedObjectContainer.WriteBytes(ByteArrayBuffer buffer, Int32 blockedAddress, Int32 addressOffset)
       v Db4objects.Db4o.Internal.StatefulBuffer.Write()
       v Db4objects.Db4o.Internal.LocalTransaction.WritePointer(Int32 id, Slot slot)
       v Db4objects.Db4o.Internal.LocalTransaction.WriteZeroPointer(Int32 id)
       v Db4objects.Db4o.Internal.LocalObjectContainer.GetPointerSlot()
       v Db4objects.Db4o.Internal.LocalObjectContainer.NewSlot(Int32 length)
       v Db4objects.Db4o.Internal.PersistentBase.Write(Transaction trans)
       v Db4objects.Db4o.Internal.Btree.BTree..ctor(Transaction trans, Int32 id, IIndexable4 keyHandler, Int32 treeNodeSize, Int32 treeCacheHeight)
       v Db4objects.Db4o.Internal.Btree.BTree..ctor(Transaction trans, Int32 id, IIndexable4 keyHandler)
       v Db4objects.Db4o.Internal.LocalObjectContainer.CreateBTreeClassIndex(Int32 id)
       v Db4objects.Db4o.Internal.Classindex.BTreeClassIndexStrategy.CreateBTreeIndex(ObjectContainerBase stream, Int32 btreeID)
       v Db4objects.Db4o.Internal.Classindex.BTreeClassIndexStrategy.Initialize(ObjectContainerBase stream)
       v Db4objects.Db4o.Internal.ClassMetadata.Init(ObjectContainerBase a_stream, ClassMetadata a_ancestor, IReflectClass claxx)
       v Db4objects.Db4o.Internal.PartialObjectContainer.CreateClassMetadata(ClassMetadata classMeta, IReflectClass clazz, ClassMetadata superClassMeta)
       v Db4objects.Db4o.Internal.ClassMetadataRepository.CreateClassMetadata(ClassMetadata clazz, IReflectClass reflectClazz)
       v Db4objects.Db4o.Internal.ClassMetadataRepository.ProduceClassMetadata(IReflectClass reflectClazz)
       v Db4objects.Db4o.Internal.PartialObjectContainer.FieldHandlerForClass(IReflectClass claxx)
       v Db4objects.Db4o.Internal.ClassMetadata.CollectReflectFields(ObjectContainerBase container, Collection4 collectedFields)
       v Db4objects.Db4o.Internal.ClassMetadata.AddMembers(ObjectContainerBase container)
       v Db4objects.Db4o.Internal.ClassMetadata.CheckChanges()
       v Db4objects.Db4o.Internal.ClassMetadataRepository.ReadClassMetadata(ClassMetadata classMetadata, IReflectClass clazz)
       v Db4objects.Db4o.Internal.ClassMetadataRepository.GetClassMetadata(Int32 id)
       v Db4objects.Db4o.Internal.PartialObjectContainer.ClassMetadataForId(Int32 id)
       v Db4objects.Db4o.Internal.PartialObjectContainer.FieldHandlerForId(Int32 id)
       v Db4objects.Db4o.Internal.FieldMetadata.LoadHandlerById(ObjectContainerBase container)
       v Db4objects.Db4o.Internal.Marshall.FieldMarshaller0.FromSpec(RawFieldSpec spec, ObjectContainerBase stream, FieldMetadata field)
       v Db4objects.Db4o.Internal.Marshall.FieldMarshaller1.FromSpec(RawFieldSpec spec, ObjectContainerBase stream, FieldMetadata field)
       v Db4objects.Db4o.Internal.Marshall.FieldMarshaller0.Read(ObjectContainerBase stream, FieldMetadata field, ByteArrayBuffer reader)
       v Db4objects.Db4o.Internal.Marshall.ClassMarshaller.ReadFields(ObjectContainerBase stream, ByteArrayBuffer reader, FieldMetadata[] fields)
       v Db4objects.Db4o.Internal.Marshall.ClassMarshaller.Read(ObjectContainerBase stream, ClassMetadata clazz, ByteArrayBuffer reader)
       v Db4objects.Db4o.Internal.ClassMetadata.ForceRead()
       v Db4objects.Db4o.Internal.ClassMetadata.ReadThis()
       v Db4objects.Db4o.Internal.ClassMetadataRepository.ReadClassMetadata(ClassMetadata classMetadata, IReflectClass clazz)
       v Db4objects.Db4o.Internal.ClassMetadataIterator.Map(Object current)
       v Db4objects.Db4o.Foundation.MappingIterator.MoveNext()
       v Db4objects.Db4o.Internal.ClassMetadataRepository.ForInterface(IReflectClass claxx)
       v Db4objects.Db4o.Internal.Query.Processor.QQueryBase.AddInterfaceConstraint(IReflectClass claxx)
       v Db4objects.Db4o.Internal.Query.Processor.QQueryBase.AddClassConstraint(IReflectClass claxx)
       v Db4objects.Db4o.Internal.Query.Processor.QQueryBase.Constrain(Object example)
       v Db4objects.Db4o.Internal.PartialObjectContainer.Query[ElementType](Transaction trans, Type extent, IComparer`1 comparer)
       v Db4objects.Db4o.Internal.PartialObjectContainer.Query[ElementType](Type extent)
       v Db4objects.Db4o.Internal.PartialObjectContainer.Query[Extent]()
       v Astra92.Db4o.Db4oDocumentFactory.DoOpen(String filePath, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Db4o\Db4oDocumentFactory.cs:řádek 61
       v Astra92.Db4o.WPF.Db4oOpcDocumentFactory.OpenDocument(Package package, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Db4o.WPF\Db4oOpcDocumentFactory.cs:řádek 163
       v Astra92.Db4o.WPF.Db4oOpcDocumentFactory.DoOpen(String filePath, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Db4o.WPF\Db4oOpcDocumentFactory.cs:řádek 69
       v Astra92.Collections.FileDocumentFactory.DoOpenIt(Uri uri, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\FileDocumentFactory.cs:řádek 131
       v Astra92.Collections.DocumentFactory.DoOpen(Uri uri, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\DocumentFactory.cs:řádek 621
       v Astra92.Collections.DocumentFactory.Open(Uri uri, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\DocumentFactory.cs:řádek 335
       v Astra92.Collections.DocumentFactory.Open(Uri uri, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\DocumentFactory.cs:řádek 333
       v Astra92.Collections.DocumentFactory.Open(Uri uri, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\DocumentFactory.cs:řádek 333
       v Astra92.Collections.DocumentFactory.Open(Uri uri, Boolean& readOnly) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\DocumentFactory.cs:řádek 333
       v Astra92.Collections.Documents.Open(Boolean readOnly, IList`1 uris) v D:\Data\Code\Current\Astra92.Libraries.OpenSource\Astra92.Collections\Documents.cs:řádek 456


    Best regards
    Marek
View as RSS news feed in XML