MonkeyCanCode opened a new pull request, #4755: URL: https://github.com/apache/polaris/pull/4755
<!-- ๐ Describe what changes you're proposing, especially breaking or user-facing changes. ๐ See https://github.com/apache/polaris/blob/main/CONTRIBUTING.md for more. --> This PR introduces maintenance support for helm via generic K8S CronJob where users can define various jobs supported (or will be support soon) by polaris admin tool. Couple designed decisions made in this PR: 1. User should be able to choose which jobs to enable/disable without comment out in-used ones in values.yaml but via `enabled` flag per job 2. No strict jobs associations with persistent type. Instead of tie an given job to a given persistent type, we should let user handle those as job name is just a key and users should make the call on which jobs are needed for their persistent type/bakcend. 3. Default `restartPolicy` to `Never` as oppose to default K8S `Always` as each retry creates a fresh pod, it is cleaner logs per attempt. 4. Default `concurrencyPolicy` to `Forbid` as oppose to default K8S `Allow` as there shouldn't be multiple maintenance jobs of same job running in parallel. 5. Set `automountServiceAccountToken` to `false` as oppose to default K8S `true` (not change-able) as admin tool doesn't call the K8S API. 6. Allow per job level resources/config and also inheritance certain configs from root level (e.g. securityContext and serviceAccountName) 7. Allow maintenance level configs to all jobs such as `annotations`, `extraEnv`, `envFrom`, `extraVolumes`, `extraVolumeMounts`, and `image`. Those are not overwritable at the job level as they are global to the maintenance level. 8. Added a new helper `polaris.maintenanceConfigVolume` to ensure we exclude token-broker auth artifacts from cron jobs. 9. Set correct `quarkus.config.locations` as the admin-tool image's working dir is `/home/polaris` as oppose to `/deployment`. 10. Set correct `quarkus.mongodb.active` when persistence type is `nosql` and nosql.backend is `MongoDb`. Couple things I am not sure if we should do: 1. Use different service account for global maintenance jobs to enforce least-privilege. Currently this is shared SA from the parent one which will likely has way more access than it really needed such as IAM role annotation attached to the SA 2. As the workdir for admin image is not default to `/deployment`, I had to fix it in chart, maybe we should fix this in Dockerfile instead Here are sample jobs (manual and scheduled): ``` โ polaris git:(helm_maintenance_jobs) โ k get pods -n polaris | grep Completed manual-6bd8f 0/1 Completed 0 37m polaris-maint-nosql-maintenance-29690795-5nv4z 0/1 Completed 0 32m ``` Sample logs from the completed job: ``` โ polaris git:(helm_maintenance_jobs) โ k logs pods/polaris-maint-nosql-maintenance-29690795-5nv4z -n polaris 2026-06-14 14:35:00,997 WARN [io.qua.config] [,] [,,,] (main) Unrecognized configuration key "quarkus.otel.sdk.disabled" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo 2026-06-14 14:35:00,997 WARN [io.qua.config] [,] [,,,] (main) Unrecognized configuration key "quarkus.log.file.json.enabled" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo 2026-06-14 14:35:01,206 INFO [org.mon.dri.client] [,] [,,,] (main) MongoClient with metadata {"driver": {"name": "mongo-java-driver|quarkus|reactive-streams", "version": "5.6.5"}, "os": {"type": "Linux", "name": "Linux", "architecture": "aarch64", "version": "6.12.76-linuxkit"}, "platform": "Java/Red Hat, Inc./21.0.11+10-LTS", "env": {"container": {"orchestrator": "kubernetes"}}} created with settings MongoClientSettings{readPreference=primary, writeConcern=WriteConcern{w=null, wTimeout=null ms, journal=true}, retryWrites=false, retryReads=true, readConcern=ReadConcern{level=null}, credential=null, transportSettings=NettyTransportSettings{eventLoopGroup=io.netty.channel.nio.NioEventLoopGroup@158f4cfe, socketChannelClass=class io.netty.channel.socket.nio.NioSocketChannel, allocator=PooledByteBufAllocator(directByDefault: true), sslContext=null}, commandListeners=[], codecRegistry=ProvidersCodecRegistry{codecProviders=[ProvidersCodecRegistry{codecProviders=[ValueCodecProvider{}, Bs onValueCodecProvider{}, DBRefCodecProvider{}, DBObjectCodecProvider{}, DocumentCodecProvider{}, CollectionCodecProvider{}, IterableCodecProvider{}, MapCodecProvider{}, GeoJsonCodecProvider{}, GridFSFileCodecProvider{}, Jsr310CodecProvider{}, JsonObjectCodecProvider{}, BsonCodecProvider{}, com.mongodb.client.model.mql.ExpressionCodecProvider@35f639fa, com.mongodb.Jep395RecordCodecProvider@5aaaa446, com.mongodb.KotlinCodecProvider@6c6333cd, EnumCodecProvider{}]}, ProvidersCodecRegistry{codecProviders=[org.bson.codecs.pojo.PojoCodecProvider@3e47a03]}]}, loggerSettings=LoggerSettings{maxDocumentLength=1000}, clusterSettings={hosts=[mongodb:27017], srvServiceName=mongodb, mode=SINGLE, requiredClusterType=UNKNOWN, requiredReplicaSetName='null', serverSelector='null', clusterListeners='[]', serverSelectionTimeout='30000 ms', localThreshold='15 ms'}, socketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=0, receiveBufferSize=0, proxySettings=ProxySettings{host=null, port=null, username=null, password=null}}, heartbeatSocketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=10000, receiveBufferSize=0, proxySettings=ProxySettings{host=null, port=null, username=null, password=null}}, connectionPoolSettings=ConnectionPoolSettings{maxSize=100, minSize=0, maxWaitTimeMS=120000, maxConnectionLifeTimeMS=0, maxConnectionIdleTimeMS=0, maintenanceInitialDelayMS=0, maintenanceFrequencyMS=60000, connectionPoolListeners=[], maxConnecting=2}, serverSettings=ServerSettings{heartbeatFrequencyMS=10000, minHeartbeatFrequencyMS=500, serverMonitoringMode=AUTO, serverListeners='[]', serverMonitorListeners='[]'}, sslSettings=SslSettings{enabled=false, invalidHostNameAllowed=false, context=null}, applicationName='null', compressorList=[], uuidRepresentation=UNSPECIFIED, serverApi=null, autoEncryptionSettings=null, dnsClient=null, inetAddressResolver=null, contextProvider=null, timeoutMS=null} 2026-06-14 14:35:01,239 INFO [org.mon.dri.cluster] [,] [,,,] (cluster-ClusterId{value='6a2ebc15c78056edf3db20c2', description='null'}-mongodb:27017) Monitor thread successfully connected to server with description ServerDescription{address=mongodb:27017, type=STANDALONE, cryptd=false, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=27, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=16290417, minRoundTripTimeNanos=0} 2026-06-14 14:35:01,277 INFO [org.apa.pol.per.nos.qua.dis.AddressResolver] [,] [,,,] (main) Using nameserver kube-dns.kube-system.svc.cluster.local/10.96.0.10 with search list [polaris.svc.cluster.local, svc.cluster.local, cluster.local] 2026-06-14 14:35:01,302 INFO [org.mon.dri.client] [,] [,,,] (main) MongoClient with metadata {"driver": {"name": "mongo-java-driver|quarkus|sync", "version": "5.6.5"}, "os": {"type": "Linux", "name": "Linux", "architecture": "aarch64", "version": "6.12.76-linuxkit"}, "platform": "Java/Red Hat, Inc./21.0.11+10-LTS", "env": {"container": {"orchestrator": "kubernetes"}}} created with settings MongoClientSettings{readPreference=primary, writeConcern=WriteConcern{w=null, wTimeout=null ms, journal=true}, retryWrites=false, retryReads=true, readConcern=ReadConcern{level=null}, credential=null, transportSettings=null, commandListeners=[], codecRegistry=ProvidersCodecRegistry{codecProviders=[ProvidersCodecRegistry{codecProviders=[ValueCodecProvider{}, BsonValueCodecProvider{}, DBRefCodecProvider{}, DBObjectCodecProvider{}, DocumentCodecProvider{}, CollectionCodecProvider{}, IterableCodecProvider{}, MapCodecProvider{}, GeoJsonCodecProvider{}, GridFSFileCodecProvider{}, Jsr310CodecProvider{ }, JsonObjectCodecProvider{}, BsonCodecProvider{}, com.mongodb.client.model.mql.ExpressionCodecProvider@35f639fa, com.mongodb.Jep395RecordCodecProvider@5aaaa446, com.mongodb.KotlinCodecProvider@6c6333cd, EnumCodecProvider{}]}, ProvidersCodecRegistry{codecProviders=[org.bson.codecs.pojo.PojoCodecProvider@1abebef3]}]}, loggerSettings=LoggerSettings{maxDocumentLength=1000}, clusterSettings={hosts=[mongodb:27017], srvServiceName=mongodb, mode=SINGLE, requiredClusterType=UNKNOWN, requiredReplicaSetName='null', serverSelector='null', clusterListeners='[]', serverSelectionTimeout='30000 ms', localThreshold='15 ms'}, socketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=0, receiveBufferSize=0, proxySettings=ProxySettings{host=null, port=null, username=null, password=null}}, heartbeatSocketSettings=SocketSettings{connectTimeoutMS=10000, readTimeoutMS=10000, receiveBufferSize=0, proxySettings=ProxySettings{host=null, port=null, username=null, password=null}}, connectionPoolSetti ngs=ConnectionPoolSettings{maxSize=100, minSize=0, maxWaitTimeMS=120000, maxConnectionLifeTimeMS=0, maxConnectionIdleTimeMS=0, maintenanceInitialDelayMS=0, maintenanceFrequencyMS=60000, connectionPoolListeners=[], maxConnecting=2}, serverSettings=ServerSettings{heartbeatFrequencyMS=10000, minHeartbeatFrequencyMS=500, serverMonitoringMode=AUTO, serverListeners='[]', serverMonitorListeners='[]'}, sslSettings=SslSettings{enabled=false, invalidHostNameAllowed=false, context=null}, applicationName='null', compressorList=[], uuidRepresentation=UNSPECIFIED, serverApi=null, autoEncryptionSettings=null, dnsClient=null, inetAddressResolver=null, contextProvider=null, timeoutMS=null} 2026-06-14 14:35:01,307 INFO [org.mon.dri.cluster] [,] [,,,] (cluster-ClusterId{value='6a2ebc15c78056edf3db20c3', description='null'}-mongodb:27017) Monitor thread successfully connected to server with description ServerDescription{address=mongodb:27017, type=STANDALONE, cryptd=false, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=27, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=1920291, minRoundTripTimeNanos=0} 2026-06-14 14:35:01,360 INFO [io.quarkus] [,] [,,,] (main) Apache Polaris Admin Tool 1.6.0-SNAPSHOT on JVM (powered by Quarkus 3.36.2) started in 0.728s. Listening on: http://0.0.0.0:8181 2026-06-14 14:35:01,361 INFO [io.quarkus] [,] [,,,] (main) Profile prod activated. 2026-06-14 14:35:01,361 INFO [io.quarkus] [,] [,,,] (main) Installed features: [agroal, amazon-sdk-rds, cdi, jdbc-postgresql, micrometer, mongodb-client, narayana-jta, picocli, smallrye-context-propagation, vertx] 2026-06-14 14:35:01,416 INFO [org.apa.pol.per.nos.qua.bac.BackendProvider] [,] [,,,] (main) Opened new persistence backend 'MongoDb' database name: polaris Maintenance configuration: created-at grace time: PT3H delete batch size: 10 retained runs: 50 expected object count: 100000 expected reference count: 100 last-run multiplier: 1.100000 initialized FPP: 0.000010 expected FPP: 0.000050 reference scan rate limit / sec: (unlimited) object scan rate limit / sec: (unlimited) 2026-06-14 14:35:01,448 INFO [org.apa.pol.per.nos.imp.cac.CaffeineCacheBackend] [,] [,,,] (main) Initialized persistence cache with a capacity of ~ 1040 MB 2026-06-14 14:35:01,459 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Using 5 realm retained identifiers 2026-06-14 14:35:01,459 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm retained identifier: Privileges Mapping 2026-06-14 14:35:01,459 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm retained identifier: Maintenance service 2026-06-14 14:35:01,460 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm retained identifier: Catalog data 2026-06-14 14:35:01,460 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm retained identifier: Nodes 2026-06-14 14:35:01,460 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm retained identifier: Realm management 2026-06-14 14:35:01,460 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Using 0 object type identifiers: Process system realm: true Realms to process: (none) Realms to purge: (none) Starting NoSql persistence maintenance run... This can run for quite some time, messages may be not be printed immediately, stay patient... 2026-06-14 14:35:01,539 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Triggering maintenance run with 0 realms to purge and 0 realms to process 2026-06-14 14:35:01,602 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Sized retained collector for 1000 references and 100000 objects with an fpp of 1.0E-5, approximate bloom filter heap sizes: 375 and 37442 bytes 2026-06-14 14:35:01,604 DEBUG [org.apa.pol.per.nos.imp.com.CommitterImpl] [,] [,,,] (main) commit start 2026-06-14 14:35:01,608 DEBUG [org.apa.pol.per.nos.imp.com.CommitterImpl] [,] [,,,] (main) commitAttempt 2026-06-14 14:35:01,614 DEBUG [org.apa.pol.per.nos.imp.com.CommitterImpl] [,] [,,,] (main) Referenced object Optional[MaintenanceRunsObj{id=170541215596052480, numParts=1, seq=1, tail=[], maintenanceRunId=ObjRef{type=mtr, id=170541215583469568}}] for commit attempt for reference 'maintenance-runs' 2026-06-14 14:35:01,632 DEBUG [org.apa.pol.per.nos.nod.imp.NodeManagementImpl] [,] [,,,] (main) Leasing a node ID... 2026-06-14 14:35:01,634 DEBUG [org.apa.pol.per.nos.nod.imp.NodeManagementImpl] [,] [,,,] (main) Try lease node ID 802 ... 2026-06-14 14:35:01,645 INFO [org.apa.pol.per.nos.nod.imp.NodeManagementImpl] [,] [,,,] (main) New lease for node#802 acquired, valid until 2026-06-14T15:35:01.635246291Z (renewal scheduled in PT44M59S). 2026-06-14 14:35:01,656 DEBUG [org.apa.pol.per.nos.imp.com.CommitterImpl] [,] [,,,] (main) Successfully committed change from Reference{name=maintenance-runs, pointer=ObjRef{type=mtrs, id=170541215596052480}, createdAtMicros=1781447394131320, previousPointers=[]} to Reference{name=maintenance-runs, pointer=ObjRef{type=mtrs, id=170542504699109377}, createdAtMicros=1781447394131320, previousPointers=[170541215596052480]} 2026-06-14 14:35:01,656 DEBUG [org.apa.pol.per.nos.imp.com.CommitterImpl] [,] [,,,] (main) commit() yielding result 2026-06-14 14:35:01,657 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Identifying referenced data in realm '::system::' 2026-06-14 14:35:01,658 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Running maintenance for realm '::system::' via 'Privileges Mapping' 2026-06-14 14:35:01,660 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm identifier 'Privileges Mapping' did not handle ::system:: 2026-06-14 14:35:01,660 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Running maintenance for realm '::system::' via 'Maintenance service' 2026-06-14 14:35:01,663 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm identifier 'Maintenance service' handled ::system:: 2026-06-14 14:35:01,664 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Running maintenance for realm '::system::' via 'Catalog data' 2026-06-14 14:35:01,664 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Cleaning stale grant records... 2026-06-14 14:35:01,665 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: grants 2026-06-14 14:35:01,665 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Cleaning stale policy mappings... 2026-06-14 14:35:01,666 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: policy-mappings 2026-06-14 14:35:01,666 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying root object... 2026-06-14 14:35:01,667 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: root 2026-06-14 14:35:01,667 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying principals... 2026-06-14 14:35:01,784 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: principals 2026-06-14 14:35:01,784 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying principal roles... 2026-06-14 14:35:01,786 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: principal-roles 2026-06-14 14:35:01,786 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying grants... 2026-06-14 14:35:01,787 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: grants 2026-06-14 14:35:01,787 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying immediate tasks... 2026-06-14 14:35:01,788 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: immediate-tasks 2026-06-14 14:35:01,788 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying policy mappings... 2026-06-14 14:35:01,789 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: policy-mappings 2026-06-14 14:35:01,789 INFO [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Identifying catalogs... 2026-06-14 14:35:01,790 DEBUG [org.apa.pol.per.nos.met.mai.CatalogRetainedIdentifier] [,] [,,,] (main) Reference not found: catalogs 2026-06-14 14:35:01,790 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm identifier 'Catalog data' handled ::system:: 2026-06-14 14:35:01,790 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Running maintenance for realm '::system::' via 'Nodes' 2026-06-14 14:35:01,798 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm identifier 'Nodes' did not handle ::system:: 2026-06-14 14:35:01,798 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Running maintenance for realm '::system::' via 'Realm management' 2026-06-14 14:35:01,800 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Realm identifier 'Realm management' did not handle ::system:: 2026-06-14 14:35:01,801 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Start scanning backend database, too-new: 1781436901657488 ... 2026-06-14 14:35:01,804 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' reference maintenance-runs -> too new, createdAtMicros = 1781447394131320 2026-06-14 14:35:01,804 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' reference realms -> too new, createdAtMicros = 1781447394183477 2026-06-14 14:35:01,805 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=nodes, id=9223372036854775807} -> too new, createdAtMicros = 1781447394274600 2026-06-14 14:35:01,805 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=node, id=9223372036853366784} -> too new, createdAtMicros = 1781447394544878 2026-06-14 14:35:01,805 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=mtr, id=170541215583469568} -> too new, createdAtMicros = 1781447394522099 2026-06-14 14:35:01,805 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=mtrs, id=170541215596052480} -> too new, createdAtMicros = 1781447394301272 2026-06-14 14:35:01,805 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=node, id=9223372036853866496} -> too new, createdAtMicros = 1781447701638304 2026-06-14 14:35:01,805 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=mtr, id=170542504699109376} -> too new, createdAtMicros = 1781447701646462 2026-06-14 14:35:01,806 DEBUG [org.apa.pol.per.nos.mai.imp.ScanHandler] [,] [,,,] (main) Got '::system::' object ObjRef{type=mtrs, id=170542504699109377} -> too new, createdAtMicros = 1781447701646462 2026-06-14 14:35:01,806 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Finished scanning backend database 2026-06-14 14:35:01,807 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Maintenance run completed successfully 2026-06-14 14:35:01,807 INFO [org.apa.pol.per.nos.mai.imp.MaintenanceServiceImpl] [,] [,,,] (main) Persisting maintenance result MaintenanceRunInformation{started=2026-06-14T14:35:01.646156833Z, finished=2026-06-14T14:35:01.807584458Z, success=true, detailedInformation=, referenceStats=MaintenanceStats{scanned=2, retained=0, newer=2, purged=0}, objStats=MaintenanceStats{scanned=7, retained=0, newer=7, purged=0}, perRealmReferenceStats={::system::=MaintenanceStats{scanned=2, retained=0, newer=2, purged=0}}, perRealmPerObjTypeStats={::system::={node=MaintenanceStats{scanned=2, retained=0, newer=2, purged=0}, nodes=MaintenanceStats{scanned=1, retained=0, newer=1, purged=0}, mtr=MaintenanceStats{scanned=2, retained=0, newer=2, purged=0}, mtrs=MaintenanceStats{scanned=2, retained=0, newer=2, purged=0}}}, purgedRealms=0, identifiedObjs=1030, identifiedReferences=10} ================================================================================== Run started: 2026-06-14T14:35:01.646156833Z status: (no exceptional information, all good so far) finished: 2026-06-14T14:35:01.807584458Z details: Realms: purged: 0 References: scanned: 2 retained: 0 too new: 2 purged: 0 Realm: ::system:: scanned: 2 retained: 0 too new: 2 purged: 0 Objects: scanned: 7 retained: 0 too new: 7 purged: 0 Realm: ::system:: Type: node (Node) scanned: 2 retained: 0 too new: 2 purged: 0 Type: nodes (Nodes) scanned: 1 retained: 0 too new: 1 purged: 0 Type: mtr (Maintenance Run) scanned: 2 retained: 0 too new: 2 purged: 0 Type: mtrs (Maintenance Runs) scanned: 2 retained: 0 too new: 2 purged: 0 2026-06-14 14:35:01,819 DEBUG [org.apa.pol.per.nos.nod.imp.NodeManagementImpl] [,] [,,,] (main) Closing NodeManagement 2026-06-14 14:35:01,819 INFO [org.apa.pol.per.nos.nod.imp.NodeManagementImpl] [,] [,,,] (main) Releasing lease for node id 802 2026-06-14 14:35:01,879 INFO [io.quarkus] [,] [,,,] (main) Apache Polaris Admin Tool stopped in 0.066s ``` ML: https://lists.apache.org/thread/5nst0f2ygnl2gj3j910q7m8nk2fvokc7 ## Checklist - [x] ๐ก๏ธ Don't disclose security issues! (contact [email protected]) - [x] ๐ Clearly explained why the changes are needed, or linked related issues: Fixes # - [x] ๐งช Added/updated tests with good coverage, or manually tested (and explained how) - [x] ๐ก Added comments for complex logic - [x] ๐งพ Updated `CHANGELOG.md` (if needed) - [x] ๐ Updated documentation in `site/content/in-dev/unreleased` (if needed) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
