ECS: Não é possível migrar clipes do Centera para o ECS - ERROR_RETENTION_INCORRECT
Summary: Não é possível migrar clipes do Centera para o ECS - "ERROR_RETENTION_INCORRECT".
Symptoms
Os clipes estão falhando ao migrar do Centera para o ECS com "ERROR_RETENTION_INCORRECT".
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 falhará.
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
Resolution
Cenário 1:
por exemplo, se você tivesse clipes de CAS com retenção de 7 anos definidos neles, teria que criar um bucket com os seguintes valores de retenção:
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
Dessa forma, a retenção fica dentro das restrições de mínimo/máximo.
Cenário 2:
peça ao cliente para fornecer as políticas de classe de retenção abaixo.
-
Inicie a CLI do Centera.
-
Conecte-se como um usuário com a função de conformidade ou monitor.
-
Digite o comando:
show retention allO resultado é semelhante a:
Retention class name Period ------------------------------------------ class 1 5 years class 2 3 months class 3 10 years
Em seguida, você deve adicionar todas essas políticas de classe de retenção às políticas de retenção de namespace no lado do 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.