MMBase

Serialization can corrupt MMBase database

Details

  • Type: Bug Bug
  • Status: Resolved Resolved
  • Priority: Critical Critical
  • Resolution: Cannot Reproduce
  • Affects Version/s: 1.8.3
  • Fix Version/s: 1.8.6
  • Component/s: Core
  • Description:
    Hide
    When MMBase serializes the bridge cloud when closing an application server, there is a risk that it restarts MMBase while doing so. For some raeson, the restarted MMAbse does not recognize buidlers already present in the typedef builder, and starst making new records, assigning new objecttypes.
    This corrupts the database (specifically the typedef, versions, and daymerks tables) with false data.
    After restart MMBase may use the wrong otypes, and can then not properly access data.
    On some environments this happens after every server restart - the cause is unclear.

    For the moment, I turned off serialization by making Cloud unserializable. This at least prevents the corruption, though ofcourse serialization no longer works.
    Show
    When MMBase serializes the bridge cloud when closing an application server, there is a risk that it restarts MMBase while doing so. For some raeson, the restarted MMAbse does not recognize buidlers already present in the typedef builder, and starst making new records, assigning new objecttypes. This corrupts the database (specifically the typedef, versions, and daymerks tables) with false data. After restart MMBase may use the wrong otypes, and can then not properly access data. On some environments this happens after every server restart - the cause is unclear. For the moment, I turned off serialization by making Cloud unserializable. This at least prevents the corruption, though ofcourse serialization no longer works.
  • Environment:
    Tomcat 5

Issue Links

Activity

Hide
Nico Klasens added a comment - 2007-05-04 14:09
Fixed MMB-1370. Maybe this is fixed too. How is this reproducable?
Show
Nico Klasens added a comment - 2007-05-04 14:09 Fixed MMB-1370. Maybe this is fixed too. How is this reproducable?
Hide
Nico Klasens added a comment - 2008-04-12 11:18
Just tried to kill my tomcat and got some exceptions. Maybe this is related to restarting mmbase

Exception in startModule of module 'org.mmbase.module.core.MMBase@18600d7' ! null
java.lang.NullPointerException:
        at org.mmbase.util.SortedBundle.getResource(SortedBundle.java:165)
        at org.mmbase.util.LocalizedEntryListFactory$Bundle.get(LocalizedEntryListFactory.java:663)
        at org.mmbase.util.LocalizedEntryListFactory.size(LocalizedEntryListFactory.java:446)
        at org.mmbase.util.LocalizedEntryListFactory.size(LocalizedEntryListFactory.java:403)
        at org.mmbase.util.LocalizedEntryListFactory$1.size(LocalizedEntryListFactory.java:245)
        at org.mmbase.datatypes.BasicDataType$EnumerationRestriction.valueString(BasicDataType.java:1254)
        at org.mmbase.datatypes.BasicDataType$StaticAbstractRestriction.toString(BasicDataType.java:1061)
        at org.mmbase.datatypes.BasicDataType$StaticAbstractRestriction.toString(BasicDataType.java:1055)
        at java.lang.String.valueOf(String.java:2827)
        at java.lang.StringBuilder.append(StringBuilder.java:115)
        at org.mmbase.datatypes.BasicDataType.toStringBuilder(BasicDataType.java:526)
        at org.mmbase.datatypes.ComparableDataType.toStringBuilder(ComparableDataType.java:183)
        at org.mmbase.datatypes.StringDataType.toStringBuilder(StringDataType.java:260)
        at org.mmbase.datatypes.BasicDataType.toString(BasicDataType.java:532)
        at java.lang.String.valueOf(String.java:2827)
        at java.lang.StringBuilder.append(StringBuilder.java:115)
        at java.util.AbstractCollection.toString(AbstractCollection.java:422)
        at java.lang.String.valueOf(String.java:2827)
        at java.lang.StringBuilder.append(StringBuilder.java:115)
        at org.mmbase.datatypes.DataTypeCollector.toString(DataTypeCollector.java:286)
        at java.lang.String.valueOf(String.java:2827)
        at java.lang.StringBuilder.append(StringBuilder.java:115)
        at org.mmbase.datatypes.DataTypes.initialize(DataTypes.java:61)
        at org.mmbase.module.core.MMBase.init(MMBase.java:319)
        at org.mmbase.module.Module.startModule(Module.java:154)
        at org.mmbase.module.Module.startModules(Module.java:366)
        at org.mmbase.module.Module.checkModules(Module.java:426)
        at org.mmbase.module.Module.getModule(Module.java:404)
        at org.mmbase.module.core.MMBase.getMMBase(MMBase.java:618)
        at org.mmbase.storage.search.implementation.BasicSearchQuery.addFields(BasicSearchQuery.java:443)
        at org.mmbase.storage.search.implementation.NodeSearchQuery.<init>(NodeSearchQuery.java:65)
        at org.mmbase.module.builders.MMEvents.probeCall(MMEvents.java:128)
        at org.mmbase.module.builders.MMEventsProbe.run(MMEventsProbe.java:60)
        at org.mmbase.core.util.DaemonThread.run(DaemonThread.java:118)
INFO Starting module mmadmin
INFO Starting module jdbc
Exception in startModule of module 'host: 'localhost' port: '0' database: 'mmbase' user: 'sa' driver: org.hsqldb.jdbcDriver'
max life time: 120000 ms probe time: 30000 ms' ! null
java.lang.NullPointerException:
        at org.mmbase.util.logging.LoggerWrapper.service(LoggerWrapper.java:82)
        at org.mmbase.module.core.MMBaseContext.getThreadGroup(MMBaseContext.java:148)
        at org.mmbase.core.util.DaemonThread.<init>(DaemonThread.java:62)
        at org.mmbase.module.core.MMBaseContext.startThread(MMBaseContext.java:161)
        at org.mmbase.module.database.JDBCProbe.<init>(JDBCProbe.java:41)
        at org.mmbase.module.database.JDBC.init(JDBC.java:74)
        at org.mmbase.module.Module.startModule(Module.java:154)
        at org.mmbase.module.Module.startModules(Module.java:366)
        at org.mmbase.module.Module.checkModules(Module.java:426)
        at org.mmbase.module.Module.getModule(Module.java:404)
        at org.mmbase.module.core.MMBase.getMMBase(MMBase.java:618)
        at org.mmbase.storage.search.implementation.BasicSearchQuery.addFields(BasicSearchQuery.java:443)
        at org.mmbase.storage.search.implementation.NodeSearchQuery.<init>(NodeSearchQuery.java:65)
        at org.mmbase.module.builders.MMEvents.probeCall(MMEvents.java:128)
        at org.mmbase.module.builders.MMEventsProbe.run(MMEventsProbe.java:60)
        at org.mmbase.core.util.DaemonThread.run(DaemonThread.java:118)
INFO Starting module clustering
Exception in thread "mmevents" java.lang.NullPointerException
        at org.mmbase.util.logging.LoggerWrapper.error(LoggerWrapper.java:110)
        at org.mmbase.module.Module.startModules(Module.java:368)
        at org.mmbase.module.Module.checkModules(Module.java:426)
        at org.mmbase.module.Module.getModule(Module.java:404)
        at org.mmbase.module.core.MMBase.getMMBase(MMBase.java:618)
        at org.mmbase.storage.search.implementation.BasicSearchQuery.addFields(BasicSearchQuery.java:443)
        at org.mmbase.storage.search.implementation.NodeSearchQuery.<init>(NodeSearchQuery.java:65)
        at org.mmbase.module.builders.MMEvents.probeCall(MMEvents.java:128)
        at org.mmbase.module.builders.MMEventsProbe.run(MMEventsProbe.java:60)
        at org.mmbase.core.util.DaemonThread.run(DaemonThread.java:118)
Show
Nico Klasens added a comment - 2008-04-12 11:18 Just tried to kill my tomcat and got some exceptions. Maybe this is related to restarting mmbase Exception in startModule of module 'org.mmbase.module.core.MMBase@18600d7' ! null java.lang.NullPointerException:         at org.mmbase.util.SortedBundle.getResource(SortedBundle.java:165)         at org.mmbase.util.LocalizedEntryListFactory$Bundle.get(LocalizedEntryListFactory.java:663)         at org.mmbase.util.LocalizedEntryListFactory.size(LocalizedEntryListFactory.java:446)         at org.mmbase.util.LocalizedEntryListFactory.size(LocalizedEntryListFactory.java:403)         at org.mmbase.util.LocalizedEntryListFactory$1.size(LocalizedEntryListFactory.java:245)         at org.mmbase.datatypes.BasicDataType$EnumerationRestriction.valueString(BasicDataType.java:1254)         at org.mmbase.datatypes.BasicDataType$StaticAbstractRestriction.toString(BasicDataType.java:1061)         at org.mmbase.datatypes.BasicDataType$StaticAbstractRestriction.toString(BasicDataType.java:1055)         at java.lang.String.valueOf(String.java:2827)         at java.lang.StringBuilder.append(StringBuilder.java:115)         at org.mmbase.datatypes.BasicDataType.toStringBuilder(BasicDataType.java:526)         at org.mmbase.datatypes.ComparableDataType.toStringBuilder(ComparableDataType.java:183)         at org.mmbase.datatypes.StringDataType.toStringBuilder(StringDataType.java:260)         at org.mmbase.datatypes.BasicDataType.toString(BasicDataType.java:532)         at java.lang.String.valueOf(String.java:2827)         at java.lang.StringBuilder.append(StringBuilder.java:115)         at java.util.AbstractCollection.toString(AbstractCollection.java:422)         at java.lang.String.valueOf(String.java:2827)         at java.lang.StringBuilder.append(StringBuilder.java:115)         at org.mmbase.datatypes.DataTypeCollector.toString(DataTypeCollector.java:286)         at java.lang.String.valueOf(String.java:2827)         at java.lang.StringBuilder.append(StringBuilder.java:115)         at org.mmbase.datatypes.DataTypes.initialize(DataTypes.java:61)         at org.mmbase.module.core.MMBase.init(MMBase.java:319)         at org.mmbase.module.Module.startModule(Module.java:154)         at org.mmbase.module.Module.startModules(Module.java:366)         at org.mmbase.module.Module.checkModules(Module.java:426)         at org.mmbase.module.Module.getModule(Module.java:404)         at org.mmbase.module.core.MMBase.getMMBase(MMBase.java:618)         at org.mmbase.storage.search.implementation.BasicSearchQuery.addFields(BasicSearchQuery.java:443)         at org.mmbase.storage.search.implementation.NodeSearchQuery.<init>(NodeSearchQuery.java:65)         at org.mmbase.module.builders.MMEvents.probeCall(MMEvents.java:128)         at org.mmbase.module.builders.MMEventsProbe.run(MMEventsProbe.java:60)         at org.mmbase.core.util.DaemonThread.run(DaemonThread.java:118) INFO Starting module mmadmin INFO Starting module jdbc Exception in startModule of module 'host: 'localhost' port: '0' database: 'mmbase' user: 'sa' driver: org.hsqldb.jdbcDriver' max life time: 120000 ms probe time: 30000 ms' ! null java.lang.NullPointerException:         at org.mmbase.util.logging.LoggerWrapper.service(LoggerWrapper.java:82)         at org.mmbase.module.core.MMBaseContext.getThreadGroup(MMBaseContext.java:148)         at org.mmbase.core.util.DaemonThread.<init>(DaemonThread.java:62)         at org.mmbase.module.core.MMBaseContext.startThread(MMBaseContext.java:161)         at org.mmbase.module.database.JDBCProbe.<init>(JDBCProbe.java:41)         at org.mmbase.module.database.JDBC.init(JDBC.java:74)         at org.mmbase.module.Module.startModule(Module.java:154)         at org.mmbase.module.Module.startModules(Module.java:366)         at org.mmbase.module.Module.checkModules(Module.java:426)         at org.mmbase.module.Module.getModule(Module.java:404)         at org.mmbase.module.core.MMBase.getMMBase(MMBase.java:618)         at org.mmbase.storage.search.implementation.BasicSearchQuery.addFields(BasicSearchQuery.java:443)         at org.mmbase.storage.search.implementation.NodeSearchQuery.<init>(NodeSearchQuery.java:65)         at org.mmbase.module.builders.MMEvents.probeCall(MMEvents.java:128)         at org.mmbase.module.builders.MMEventsProbe.run(MMEventsProbe.java:60)         at org.mmbase.core.util.DaemonThread.run(DaemonThread.java:118) INFO Starting module clustering Exception in thread "mmevents" java.lang.NullPointerException         at org.mmbase.util.logging.LoggerWrapper.error(LoggerWrapper.java:110)         at org.mmbase.module.Module.startModules(Module.java:368)         at org.mmbase.module.Module.checkModules(Module.java:426)         at org.mmbase.module.Module.getModule(Module.java:404)         at org.mmbase.module.core.MMBase.getMMBase(MMBase.java:618)         at org.mmbase.storage.search.implementation.BasicSearchQuery.addFields(BasicSearchQuery.java:443)         at org.mmbase.storage.search.implementation.NodeSearchQuery.<init>(NodeSearchQuery.java:65)         at org.mmbase.module.builders.MMEvents.probeCall(MMEvents.java:128)         at org.mmbase.module.builders.MMEventsProbe.run(MMEventsProbe.java:60)         at org.mmbase.core.util.DaemonThread.run(DaemonThread.java:118)
Hide
Michiel Meeuwissen added a comment - 2008-07-16 22:13
Please reopen if this issue is encountered again. The cloud is serializable again, btw.
Show
Michiel Meeuwissen added a comment - 2008-07-16 22:13 Please reopen if this issue is encountered again. The cloud is serializable again, btw.

People

Dates

  • Created:
    2007-03-01 09:51
    Updated:
    2008-07-16 22:13
    Resolved:
    2008-07-16 22:12