In my homelab setup I’m installing Nexus OSS using the following statefulset.yaml and using an NFS share (with userid squashing) for the data volume. What I’ve found is that I attempt a fresh install no data using sonatype/nexus3:latest (currently OSS 3.68.0-04) the install falls into an endless loop of errors like:
2024-05-11 19:44:02,579-0400 INFO [ForkJoinPool.commonPool-worker-3] *SYSTEM com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage - Storage ‘plocal:/nexus-data/db/analytics’ is opened under OrientDB distribution : 2.2.37 (build a7541e7ceeabf592dd9a7b2928b6c023cbc73193, branch 2.2.x)
2024-05-11 19:44:02,615-0400 INFO [ForkJoinPool.commonPool-worker-0] *SYSTEM com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage - Storage ‘plocal:/nexus-data/db/config’ is opened under OrientDB distribution : 2.2.37 (build a7541e7ceeabf592dd9a7b2928b6c023cbc73193, branch 2.2.x)
2024-05-11 19:44:02,660-0400 ERROR [ForkJoinPool.commonPool-worker-2] *SYSTEM com.orientechnologies.orient.core.storage.impl.local.paginated.OLocalPaginatedStorage - Exception 5F52F931
in storage plocal:/nexus-data/db/component
: 2.2.37 (build a7541e7ceeabf592dd9a7b2928b6c023cbc73193, branch 2.2.x)
com.orientechnologies.orient.core.exception.OStorageException: Cannot open local storage ‘/nexus-data/db/component’ with mode=rw
DB name=“component”
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:323)
at com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx.open(ODatabaseDocumentTx.java:259)
at org.sonatype.nexus.orient.DatabaseManagerSupport.connect(DatabaseManagerSupport.java:178)
at org.sonatype.nexus.orient.DatabaseManagerSupport.createInstance(DatabaseManagerSupport.java:312)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at org.sonatype.nexus.orient.DatabaseManagerSupport.instance(DatabaseManagerSupport.java:289)
at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
at java.util.stream.ForEachOps$ForEachTask.compute(ForEachOps.java:290)
at java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:175)
Caused by: com.orientechnologies.orient.core.exception.OStorageException: File with name ‘ouser.pcl’ does not exist in storage ‘component’
DB name=“component”
at com.orientechnologies.orient.core.storage.cache.local.OWOWCache.loadFile(OWOWCache.java:475)
at com.orientechnologies.orient.core.storage.impl.local.paginated.base.ODurableComponent.openFile(ODurableComponent.java:180)
at com.orientechnologies.orient.core.storage.impl.local.paginated.OPaginatedCluster.open(OPaginatedCluster.java:217)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.openClusters(OAbstractPaginatedStorage.java:387)
at com.orientechnologies.orient.core.storage.impl.local.OAbstractPaginatedStorage.open(OAbstractPaginatedStorage.java:290)
… 14 common frames omitted
But if I use the sonatype/nexus3:3.67.1 instead I can get through an install then shut down and switch to the latest image and the system works fine.
So it appears that the latest docker image has a regression error that it can’t bootstrap install itself. Has anyone else experienced anything similar?
Here’s the statefulset.yaml that I came up with for the install:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nexus
namespace: services
labels:
app.kubernetes.io/name: nexus
spec:
serviceName: "nexus"
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: nexus
template:
metadata:
labels:
app.kubernetes.io/name: nexus
spec:
securityContext:
fsGroup: 200
fsGroupChangePolicy: OnRootMismatch
nodeSelector:
kubernetes.io/arch: amd64
affinity:
nodeAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
preference:
matchExpressions:
- key: wired
operator: In
values:
- "true"
containers:
- name: nexus
#image: sonatype/nexus3:3.67.1
image: sonatype/nexus3:latest
securityContext:
runAsUser: 200
imagePullPolicy: Always
livenessProbe:
httpGet:
path: /
port: 8081
scheme: HTTP
initialDelaySeconds: 180
timeoutSeconds: 1
readinessProbe:
httpGet:
path: /
port: 8081
scheme: HTTP
initialDelaySeconds: 20
timeoutSeconds: 1
env:
- name: TZ
value: "America/New_York"
- name: NEXUS_SECURITY_RANDOMPASSWORD
value: "false"
resources:
limits:
memory: "8Gi"
cpu: "4"
requests:
memory: "4Gi"
cpu: "4"
volumeMounts:
- name: nexus-data
mountPath: /nexus-data
volumes:
- name: nexus-data
nfs:
server: my.nas.ip
path: /volume1/kubernetes/nexus-data