[ 
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]

Reply via email to