OrientDB corruption state in Nexus Repository version 3.2.0-01

后端 未结 6 1200
你的背包
你的背包 2020-12-28 17:41

We are using Nexus Repository version 3.2.0-01 and started getting the following error in nexus.log. OrientDB has got corrupted. Nexus is no longer starting.

6条回答
  •  再見小時候
    2020-12-28 18:00

    We had similar issue with Nexus OSS verison 3.2.0-01 and OrientDB corrupted state because of unclean shutdown.

    In our case the corrupted storage was component located in

    $install-dir/sonatype-work/nexus3/db/component

    2017-04-14 15:09:20,007+0200 ERROR [qtp18266400-74] *UNKNOWN com.google.common.eventbus.EventBus.reentrant - Could not dispatch event AssetUpdatedEvent{metadata=AttachedEntityMetadata{schema=asset, document=asset#18:91856{bucket:#13:3,format:maven2,last_updated:Fri Apr 14 15:09:19 CEST 2017,attributes:[5],component:null,name:org/apache/maven/plugins/maven-jar-plugin/maven-metadata.xml,size:743,content_type:application/xml,blob_ref:default@ECF4439E-D7F184F8-578BAB14-ACFC0FB8-5589B163:3fb95745-4aed-460f-b711-b5f5b74b837c,last_accessed:Fri Apr 14 15:09:19 CEST 2017} v466}, remoteNodeId=null} to subscriber org.sonatype.nexus.repository.maven.internal.group.MavenGroupFacet$$EnhancerByGuice$$a88d7327@83eca7 method [public void org.sonatype.nexus.repository.maven.internal.group.MavenGroupFacet.on(org.sonatype.nexus.repository.storage.AssetEvent)]
    com.orientechnologies.orient.core.exception.OStorageException: Error during transaction commit
            DB name="component"
            at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.makeRollback(OAbstractPaginatedStorage.java:2210) [na:na]
            at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.commit(OAbstractPaginatedStorage.java:1433) [na:na]
            at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:539) [com.orientechnologies.orientdb-core:2.2.13]
            at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:104) [com.orientechnologies.orientdb-core:2.2.13]
            at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2756) [com.orientechnologies.orientdb-core:2.2.13]
            at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2725) [com.orientechnologies.orientdb-core:2.2.13]
            at org.sonatype.nexus.repository.storage.StorageTxImpl.commit(StorageTxImpl.java:172) [org.sonatype.nexus.repository:3.2.0.01]
            at sun.reflect.GeneratedMethodAccessor105.invoke(Unknown Source) [na:na]
    

    We managed to solve our problem with the following strategy

    1. Scheduling Nexus tasks, particullary:

      • Rebuild Maven repository metadata.
      • Rebuild repository index.
      • Compact blob store.
    2. Orient DB manipulation:

      • Rebuilding indexes.
      • Repairing database.

    According Nexus support you can access Orient DB console with Nexus OSS verison 3.2.1-01. Everything is explained here. Make sure your Nexus application is properly shut down before you apply any operations on database.

    Once in Orient DB console you connect to local database with

    > CONNECT PLOCAL:${your_install_dir}/sonatype-work/nexus3/db/${database} admin admin
    

    And you perform the following operations:

    > REBUILD INDEX *
    > REPAIR DATABASE --fix-graph
    > REPAIR DATABASE --fix-links
    > REPAIR DATABASE --fix-ridbags
    > REPAIR DATABASE --fix-bonsai
    > DISCONNECT
    

    I am absolutely aware my answer probably won't solve your concrete problem but I still wanted to give you some directions because you don't have any backups.

提交回复
热议问题