ECS: Impossibile eseguire la migrazione dei morsetti da Centera a ECS - ERROR_RETENTION_INCORRECT
Summary: Impossibile eseguire la migrazione delle clip da Centera a ECS - "ERROR_RETENTION_INCORRECT".
Symptoms
Le clip non riescono a eseguire la migrazione a ECS da Centera con "ERROR_RETENTION_INCORRECT".
Esempio di analisi dello stack:
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
Scenario 1:
se il periodo di retention di un oggetto non rientra nei limiti specificati nel bucket, il tentativo di scrivere l'oggetto ha esito negativo.
Quando si utilizzano le policy di retention, selezionare Infinite per Minimum Fixed Retention Period significa che tutti i valori di retention su tutti gli oggetti devono essere infiniti.
Selezionare infinito per Maximum Fixed Retention Period significa che non esiste alcun limite massimo.
I limiti di retention min/max vengono applicati a qualsiasi C-Clip scritto in un bucket. Se un clip viene migrato da uno strumento di terze parti basato su SDK, la retention deve essere entro i limiti, altrimenti viene generato un errore.
Scenario 2:
sono presenti policy di classe di retention definite in Centera. È possibile verificarlo chiedendo al cliente di fornire il seguente comando da Centera:
Config# show retention all
Resolution
Scenario 1:
ad esempio, se si dispone di clip CAS con retention di 7 anni impostata, è necessario creare un bucket con i seguenti valori di retention:
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
In questo modo, la retention rientra nei limiti min/max.
Scenario 2:
chiedere al cliente di fornire le seguenti policy della classe di retention.
-
Avviare la CLI per Centera.
-
Connettersi come utente con il ruolo di conformità o monitor.
-
Digitare il comando:
show retention allL'output è simile al seguente:
Retention class name Period ------------------------------------------ class 1 5 years class 2 3 months class 3 10 years
È quindi necessario aggiungere tutte queste policy della classe di retention ai namespace retention policy sul lato ECS. Chiedere al cliente/PS di riprovare la migrazione dopo aver aggiunto le retention policy del namespace sul lato ECS.