ECS: Não é possível migrar clipes do Centera para o ECS - ERROR_RETENTION_INCORRECT
Résumé: ECS: Não é possível migrar clipes do Centera para o ECS - ERROR_RETENTION_INCORRECT
Symptômes
Exemplo de rastreamento de pilha:
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
Cenário 1:
---------------
Se o período de retenção de um objeto estiver fora dos limites especificados no bucket, uma tentativa de gravar o objeto apresentará falha.
Ao usar políticas de retenção, selecionar Infinite para Minimum Fixed Retention Period significa que todos os valores de retenção em todos os objetos devem ser infinitos.
Selecionar infinite para Maximum Fixed Retention Period significa que não há limite máximo.
As restrições de retenção mín./máx. são aplicadas a qualquer C-Clip gravado em um bucket. Se um clipe for migrado por qualquer ferramenta de terceiros baseada em SDK, a retenção deverá estar dentro dos limites, caso contrário, um erro será exibido.
Cenário 2:
--------------
Há políticas de classe de retenção definidas no Centera. Você pode verificar isso solicitando que o cliente forneça o comando abaixo do Centera:
Config# show retention all
Résolution
---------------
Por exemplo, se você tivesse clipes de CAS com retenção de 7 anos definidos neles, precisaria criar um bucket com os seguintes valores de retenção:
Período de retenção do bucket: 0 segundo
Período fixo de retenção mínimo: 0 segundo
Período de retenção fixo máximo: 8 anos
Período mínimo de retenção variável: 0 segundo
Período máximo de retenção variável: 0 segundos
Dessa forma, a retenção fica dentro das restrições mín./máx.
Cenário 2:
--------------
Peça ao cliente que forneça as políticas de classe de retenção abaixo.
|
Em seguida, você precisa adicionar todas essas políticas de classe de retenção às políticas de retenção de namespace no ECS. Peça ao cliente/PS para tentar a migração novamente depois de adicionar as políticas de retenção de namespace no ECS.