ECS: No se pueden migrar clips de Centera a ECS: ERROR_RETENTION_INCORRECT
Summary: No se pueden migrar clips de Centera a ECS: "ERROR_RETENTION_INCORRECT".
Symptoms
Los clips no pueden migrar a ECS desde Centera con "ERROR_RETENTION_INCORRECT".
Ejemplo de seguimiento de pila:
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
Escenario 1:
si el período de retención de un objeto está fuera de los límites especificados en el depósito, fallará un intento de escribir el objeto.
Cuando se utilizan políticas de retención, seleccionar Infinito para Período de retención fijo mínimo significa que todos los valores de retención en todos los objetos deben ser infinitos.
Si selecciona infinito para Periodo de retención fijo máximo, no hay un límite máximo.
Las restricciones de retención mín./máx. se aplican a cualquier C-Clip escrito en un depósito. Si cualquier herramienta de terceros basada en SDK migra un clip, la retención debe estar dentro de los límites, de lo contrario, se produce un error.
Escenario 2:
Hay políticas de clase de retención definidas en Centera. Para verificar esto, pida al cliente que le proporcione el siguiente comando de Centera:
Config# show retention all
Resolution
Situación 1:
Por ejemplo, si tuviera clips de CAS configurados con una retención de 7 años, tendría que crear un depósito con los siguientes valores de retención:
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 esta manera, la retención se encuentra dentro de las restricciones mínimas y máximas.
Situación 2:
Solicite al cliente que le proporcione las siguientes políticas de clase de retención.
-
Inicie la CLI de Centera.
-
Conéctese como un usuario con la función de cumplimiento o monitoreo.
-
Escriba el comando:
show retention allEl resultado es similar a lo siguiente:
Retention class name Period ------------------------------------------ class 1 5 years class 2 3 months class 3 10 years
A continuación, debe agregar todas estas políticas de clase de retención a las políticas de retención del espacio de nombres en el lado de ECS. Solicite al cliente/PS que vuelva a intentar la migración después de agregar las políticas de retención del espacio de nombres en el lado de ECS.