ECS : Impossible de migrer des clips de Centera vers ECS - ERROR_RETENTION_INCORRECT
Résumé: Impossible de migrer des clips de Centera vers ECS - « ERROR_RETENTION_INCORRECT ».
Symptômes
Les clips ne parviennent pas à migrer vers ECS à partir de Centera à l’aide de la commande « ERROR_RETENTION_INCORRECT ».
Exemple de trace de pile :
169.254.1.8 2019-11-21T19:30:53,212 [1215100270,sdk,ECSSYNCKDC01/3594002/WRITE_CLIP,-531c636:16e89995c11:-7a82,1] ERROR AbstractTransaction.java (line 136) Failed to execute the transaction, aborting.
TransactionFailureException: com.emc.vipr.cashead.api.ObjectRetentionIncorrect: Failed to execute operation, error is ERROR_RETENTION_INCORRECT, object name is null
at com.emc.vipr.cashead.storageserver.access.transaction.write.ObjectWriterImpl.finish(ObjectWriterImpl.java:80)
at com.emc.vipr.cashead.storageserver.access.transaction.write.AwaitEOF.finish(AwaitEOF.java:173)
at com.emc.vipr.cashead.storageserver.access.transaction.write.AwaitEOF.put(AwaitEOF.java:111)
at com.emc.vipr.cashead.storageserver.access.msg.RichLastSegmentMessage.execute(RichLastSegmentMessage.java:61)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder$EnqueableTransactionObject.execute(HPPResponder.java:311)
at com.emc.vipr.cashead.storageserver.access.transaction.AccessTransaction.executeMessage(AccessTransaction.java:57)
at com.emc.vipr.cashead.storageserver.access.transaction.AbstractTransaction.schedule(AbstractTransaction.java:131)
at com.emc.vipr.cashead.storageserver.access.transaction.NullScheduler.registerSchedulable(NullScheduler.java:48)
at com.emc.vipr.cashead.storageserver.access.transaction.AbstractTransaction.putGeneralMessage(AbstractTransaction.java:92)
at com.emc.vipr.cashead.storageserver.access.transaction.AccessTransaction.put(AccessTransaction.java:61)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder.processTransactionObject(HPPResponder.java:276)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder.processPacket(HPPResponder.java:290)
at com.emc.vipr.cashead.storageserver.access.encoding.hpp.HPPResponder.process(HPPResponder.java:181)
at com.emc.vipr.cashead.storageserver.access.AccessNetworkServer.HandleConnection(AccessNetworkServer.java:51)
at com.emc.vipr.cashead.hppserver.HPPServer.HandleConnection(HPPServer.java:84)
at com.emc.vipr.cashead.net.NetworkServerWorker.Work(NetworkServerWorker.java:61)
at com.emc.vipr.cashead.worker.Worker.call(Worker.java:227)
at com.emc.vipr.cashead.worker.WorkerSchedulerThread.run(WorkerSchedulerThread.java:137)
Caused by: java.io.IOException: com.emc.vipr.cashead.api.ObjectRetentionIncorrect: Failed to execute operation, error is ERROR_RETENTION_INCORRECT, object name is null
at com.emc.vipr.cashead.impl.vipr.ViPRObjectWriteHandler.checkResult(ViPRObjectWriteHandler.java:73)
at com.emc.vipr.cashead.storageserver.access.transaction.write.ObjectWriterImpl.finish(ObjectWriterImpl.java:77)
... 17 more
Caused by: com.emc.vipr.cashead.api.ObjectRetentionIncorrect: Failed to execute operation, error is ERROR_RETENTION_INCORRECT, object name is null
at com.emc.vipr.cashead.impl.vipr.ExceptionTranslator.translateError(ExceptionTranslator.java:38)
at com.emc.vipr.cashead.impl.vipr.ExceptionTranslator.checkError(ExceptionTranslator.java:21)
at com.emc.vipr.cashead.impl.vipr.ViPRObjectWriteHandler.checkResult(ViPRObjectWriteHandler.java:71)
... 18 more
Cause
Scénario 1 :
si la période de rétention d’un objet se trouve en dehors des limites spécifiées sur le compartiment, une tentative d’écriture de l’objet échoue.
Lors de l’utilisation de politiques de rétention, la sélection d’Infinite pour Minimum Fixed Retention Period signifie que toutes les valeurs de rétention sur tous les objets doivent être infinies.
Si vous sélectionnez infinite pour Maximum Fixed Retention Period, il n’existe aucune limite maximale.
Des contraintes de rétention min./max. sont appliquées à n’importe quel C-Clip écrit dans un compartiment. Si un clip est migré par un outil tiers basé sur le SDK, la rétention doit être dans les limites, sinon une erreur est générée.
Scénario 2 :
des politiques de classe de rétention sont définies sur Centera. Vous pouvez le vérifier en demandant au client de vous fournir la commande ci-dessous à partir de Centera :
Config# show retention all
Résolution
Scénario 1 :
Par exemple, si vous aviez des clips CAS avec une rétention de 7 ans, vous devrez créer un compartiment avec les valeurs de rétention suivantes :
Bucket Retention Period: 0 seconds
Minimum Fixed Retention Period: 0 seconds
Maximum Fixed Retention Period: 8 years
Minimum Variable Retention Period: 0 seconds
Maximum Variable Retention Period: 0 seconds
De cette façon, la rétention se situe dans les contraintes min/max.
Scénario 2 :
demandez au client de vous fournir les politiques de classe de rétention ci-dessous.
-
Démarrez la CLI pour Centera.
-
Connectez-vous en tant qu’utilisateur doté du rôle de conformité ou de surveillance.
-
Saisissez la commande :
show retention allLe résultat est semblable à ceci :
Retention class name Period ------------------------------------------ class 1 5 years class 2 3 months class 3 10 years
Vous devez ensuite ajouter toutes ces règles de classe de rétention aux politiques de rétention des espaces de nommage côté ECS. Demandez au client/PS de tenter à nouveau la migration après avoir ajouté les règles de rétention de l’espace de nommage côté ECS.