[
https://issues.apache.org/jira/browse/HDDS-13548?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ChenXi updated HDDS-13548:
--------------------------
Description:
During OM restart, it will fetch all LifecycleConfigurations from DB. The
desalinization of LifecycleConfiguration will the check the expiry date with
now(),
{code:java}
if (dateInUTC.isBefore(now)) {
throw new OMException("Invalid lifecycle configuration: 'Date' must be
in the future " + now + "," + dateInUTC,
OMException.ResultCodes.INVALID_REQUEST);
}
{code}
For existing LifecycleConfigurations, its expiry date can be older than now()
while the LifecycleConfiguration is invalid.
{code:bash}
```
java.lang.IllegalStateException: Failed next()
at
org.apache.hadoop.hdds.utils.db.TypedTable$RawIterator.next(TypedTable.java:690)
at
org.apache.hadoop.hdds.utils.db.TypedTable$RawIterator.next(TypedTable.java:639)
at
org.apache.hadoop.hdds.utils.db.TypedTable.<init>(TypedTable.java:124)
at org.apache.hadoop.hdds.utils.db.TypedTable.<init>(TypedTable.java:92)
at org.apache.hadoop.hdds.utils.db.RDBStore.getTable(RDBStore.java:313)
at
org.apache.hadoop.ozone.om.OmMetadataManagerImpl.initializeOmTables(OmMetadataManagerImpl.java:773)
at
org.apache.hadoop.ozone.om.OmMetadataManagerImpl.start(OmMetadataManagerImpl.java:578)
at
org.apache.hadoop.ozone.om.OmMetadataManagerImpl.<init>(OmMetadataManagerImpl.java:362)
at
org.apache.hadoop.ozone.om.OzoneManager.instantiateServices(OzoneManager.java:932)
at org.apache.hadoop.ozone.om.OzoneManager.<init>(OzoneManager.java:697)
at
org.apache.hadoop.ozone.om.OzoneManager.createOm(OzoneManager.java:898)
at
org.apache.hadoop.ozone.om.OzoneManagerStarter$OMStarterHelper.start(OzoneManagerStarter.java:188)
at
org.apache.hadoop.ozone.om.OzoneManagerStarter.startOm(OzoneManagerStarter.java:85)
at
org.apache.hadoop.ozone.om.OzoneManagerStarter.call(OzoneManagerStarter.java:73)
at
org.apache.hadoop.ozone.om.OzoneManagerStarter.call(OzoneManagerStarter.java:1)
at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
at picocli.CommandLine.access$1500(CommandLine.java:148)
at
picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
at
picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
at picocli.CommandLine.execute(CommandLine.java:2170)
at org.apache.hadoop.hdds.cli.GenericCli.execute(GenericCli.java:89)
at org.apache.hadoop.hdds.cli.GenericCli.run(GenericCli.java:80)
at
org.apache.hadoop.ozone.om.OzoneManagerStarter.main(OzoneManagerStarter.java:57)
Caused by: INVALID_REQUEST org.apache.hadoop.ozone.om.exceptions.OMException:
Invalid lifecycle configuration: 'Date' must be in the future
2025-08-11T17:42:49.751Z,2014-01-19T00:00Z
at
org.apache.hadoop.ozone.om.helpers.OmLCExpiration.validateExpirationDate(OmLCExpiration.java:129)
at
org.apache.hadoop.ozone.om.helpers.OmLCExpiration.valid(OmLCExpiration.java:107)
at
org.apache.hadoop.ozone.om.helpers.OmLCExpiration$Builder.build(OmLCExpiration.java:204)
at
org.apache.hadoop.ozone.om.helpers.OmLCExpiration.getFromProtobuf(OmLCExpiration.java:174)
at
org.apache.hadoop.ozone.om.helpers.OmLCRule.getFromProtobuf(OmLCRule.java:300)
at
org.apache.hadoop.ozone.om.helpers.OmLifecycleConfiguration.getFromProtobuf(OmLifecycleConfiguration.java:206)
at
org.apache.hadoop.hdds.utils.db.DelegatedCodec.fromCodecBuffer(DelegatedCodec.java:98)
at
org.apache.hadoop.hdds.utils.db.TypedTable$1.convert(TypedTable.java:607)
at
org.apache.hadoop.hdds.utils.db.TypedTable$RawIterator.next(TypedTable.java:688)
... 25 more
```
{code}
was:
During OM restart, it will fetch all LifecycleConfigurations from DB. The
desalinization of LifecycleConfiguration will the check the expiry date with
now(),
{code:java}
if (dateInUTC.isBefore(now)) {
throw new OMException("Invalid lifecycle configuration: 'Date' must be
in the future " + now + "," + dateInUTC,
OMException.ResultCodes.INVALID_REQUEST);
}
{code}
For existing LifecycleConfigurations, its expiry date can be older than now()
while the LifecycleConfiguration is invalid.
> OM restart failure due to DB LifecycleConfiguration with expiry date older
> than now
> -----------------------------------------------------------------------------------
>
> Key: HDDS-13548
> URL: https://issues.apache.org/jira/browse/HDDS-13548
> Project: Apache Ozone
> Issue Type: Sub-task
> Reporter: Sammi Chen
> Assignee: ChenXi
> Priority: Major
>
> During OM restart, it will fetch all LifecycleConfigurations from DB. The
> desalinization of LifecycleConfiguration will the check the expiry date with
> now(),
> {code:java}
> if (dateInUTC.isBefore(now)) {
> throw new OMException("Invalid lifecycle configuration: 'Date' must
> be in the future " + now + "," + dateInUTC,
> OMException.ResultCodes.INVALID_REQUEST);
> }
> {code}
> For existing LifecycleConfigurations, its expiry date can be older than now()
> while the LifecycleConfiguration is invalid.
> {code:bash}
> ```
> java.lang.IllegalStateException: Failed next()
> at
> org.apache.hadoop.hdds.utils.db.TypedTable$RawIterator.next(TypedTable.java:690)
> at
> org.apache.hadoop.hdds.utils.db.TypedTable$RawIterator.next(TypedTable.java:639)
> at
> org.apache.hadoop.hdds.utils.db.TypedTable.<init>(TypedTable.java:124)
> at org.apache.hadoop.hdds.utils.db.TypedTable.<init>(TypedTable.java:92)
> at org.apache.hadoop.hdds.utils.db.RDBStore.getTable(RDBStore.java:313)
> at
> org.apache.hadoop.ozone.om.OmMetadataManagerImpl.initializeOmTables(OmMetadataManagerImpl.java:773)
> at
> org.apache.hadoop.ozone.om.OmMetadataManagerImpl.start(OmMetadataManagerImpl.java:578)
> at
> org.apache.hadoop.ozone.om.OmMetadataManagerImpl.<init>(OmMetadataManagerImpl.java:362)
> at
> org.apache.hadoop.ozone.om.OzoneManager.instantiateServices(OzoneManager.java:932)
> at org.apache.hadoop.ozone.om.OzoneManager.<init>(OzoneManager.java:697)
> at
> org.apache.hadoop.ozone.om.OzoneManager.createOm(OzoneManager.java:898)
> at
> org.apache.hadoop.ozone.om.OzoneManagerStarter$OMStarterHelper.start(OzoneManagerStarter.java:188)
> at
> org.apache.hadoop.ozone.om.OzoneManagerStarter.startOm(OzoneManagerStarter.java:85)
> at
> org.apache.hadoop.ozone.om.OzoneManagerStarter.call(OzoneManagerStarter.java:73)
> at
> org.apache.hadoop.ozone.om.OzoneManagerStarter.call(OzoneManagerStarter.java:1)
> at picocli.CommandLine.executeUserObject(CommandLine.java:2041)
> at picocli.CommandLine.access$1500(CommandLine.java:148)
> at
> picocli.CommandLine$RunLast.executeUserObjectOfLastSubcommandWithSameParent(CommandLine.java:2461)
> at picocli.CommandLine$RunLast.handle(CommandLine.java:2453)
> at picocli.CommandLine$RunLast.handle(CommandLine.java:2415)
> at
> picocli.CommandLine$AbstractParseResultHandler.execute(CommandLine.java:2273)
> at picocli.CommandLine$RunLast.execute(CommandLine.java:2417)
> at picocli.CommandLine.execute(CommandLine.java:2170)
> at org.apache.hadoop.hdds.cli.GenericCli.execute(GenericCli.java:89)
> at org.apache.hadoop.hdds.cli.GenericCli.run(GenericCli.java:80)
> at
> org.apache.hadoop.ozone.om.OzoneManagerStarter.main(OzoneManagerStarter.java:57)
> Caused by: INVALID_REQUEST org.apache.hadoop.ozone.om.exceptions.OMException:
> Invalid lifecycle configuration: 'Date' must be in the future
> 2025-08-11T17:42:49.751Z,2014-01-19T00:00Z
> at
> org.apache.hadoop.ozone.om.helpers.OmLCExpiration.validateExpirationDate(OmLCExpiration.java:129)
> at
> org.apache.hadoop.ozone.om.helpers.OmLCExpiration.valid(OmLCExpiration.java:107)
> at
> org.apache.hadoop.ozone.om.helpers.OmLCExpiration$Builder.build(OmLCExpiration.java:204)
> at
> org.apache.hadoop.ozone.om.helpers.OmLCExpiration.getFromProtobuf(OmLCExpiration.java:174)
> at
> org.apache.hadoop.ozone.om.helpers.OmLCRule.getFromProtobuf(OmLCRule.java:300)
> at
> org.apache.hadoop.ozone.om.helpers.OmLifecycleConfiguration.getFromProtobuf(OmLifecycleConfiguration.java:206)
> at
> org.apache.hadoop.hdds.utils.db.DelegatedCodec.fromCodecBuffer(DelegatedCodec.java:98)
> at
> org.apache.hadoop.hdds.utils.db.TypedTable$1.convert(TypedTable.java:607)
> at
> org.apache.hadoop.hdds.utils.db.TypedTable$RawIterator.next(TypedTable.java:688)
> ... 25 more
> ```
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]