You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "ChenXi (Jira)" <ji...@apache.org> on 2025/08/18 15:27:00 UTC

[jira] [Updated] (HDDS-13548) OM restart failure due to DB LifecycleConfiguration with expiry date older than now

     [ 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: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org