Details
-
Bug
-
Resolution: Parked
-
Major
-
None
-
3.13.0
-
n/a
Description
Read requests (HEAD, GET) to a hosted repository can fail in an HA cluster when a backup task is running.
This occurs because a database write transaction can be initiated during retrieval:
When the last downloaded timestamp needs to be updated:
I suspect this could also fail in a single node (non-HA) instance, but I haven't tested it.
This problem was observed in 3.13.0.
2019-01-25 05:23:49,854+0000 WARN [qtp891410167-269630] c0002762.prod.cloud.fedex.com *UNKNOWN org.sonatype.nexus.repository.view.handlers.ExceptionHandler - Nexus Repository Manager is in read-only mode: HEAD /com/foo/bar/fubar-1.0.0.zip: com.orientechnologies.orient.server.distributed.OWriteOperationNotPermittedException: Cannot execute write operation (Transaction Commit) on node '2B5F2EAA-26C150A1-1C3ED86B-F5AAFAA8-CF52EEBE' because is non a master
2019-01-25 05:23:49,905+0000 ERROR [qtp891410167-269129] c0002762.prod.cloud.fedex.com *UNKNOWN com.orientechnologies.orient.core.db.OPartitionedDatabasePool$DatabaseDocumentTxPooled - Error on transaction commit `4E73F3DB`
com.orientechnologies.orient.server.distributed.OWriteOperationNotPermittedException: Cannot execute write operation (Transaction Commit) on node '2B5F2EAA-26C150A1-1C3ED86B-F5AAFAA8-CF52EEBE' because is non a master
at com.orientechnologies.orient.server.distributed.impl.ODistributedStorage.checkNodeIsMaster(ODistributedStorage.java:1948)
at com.orientechnologies.orient.server.distributed.impl.ODistributedStorage.commit(ODistributedStorage.java:1399)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.doCommit(OTransactionOptimistic.java:541)
at com.orientechnologies.orient.core.tx.OTransactionOptimistic.commit(OTransactionOptimistic.java:99)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2908)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.commit(ODatabaseDocumentTx.java:2870)
at org.sonatype.nexus.repository.storage.StorageTxImpl.commit(StorageTxImpl.java:181)
at sun.reflect.GeneratedMethodAccessor148.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.sonatype.nexus.common.stateguard.SimpleMethodInvocation.proceed(SimpleMethodInvocation.java:53)
at org.sonatype.nexus.common.stateguard.MethodInvocationAction.run(MethodInvocationAction.java:39)
at org.sonatype.nexus.common.stateguard.StateGuard$TransitionImpl.run(StateGuard.java:191)
at org.sonatype.nexus.common.stateguard.TransitionsInterceptor.invoke(TransitionsInterceptor.java:56)
at org.sonatype.nexus.common.stateguard.StateGuardAspect$1.invoke(StateGuardAspect.java:66)
at com.sun.proxy.$Proxy224.commit(Unknown Source)
Attachments
Issue Links
- relates
-
NEXUS-18949 /service/rest/v1/status returns 200 status code when node is read-only
-
- Closed
-