Reverter para a versão anterior da KCL
Este tópico explica como reverter o aplicativo de consumidor de KCL 3.5.x+ para KCL 1.x. O processo de reversão depende da fase de migração em que o aplicativo está atualmente.
Reverter da Fase 1 para a KCL 1.x
Se o aplicativo estiver na Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1), você poderá reverter para a KCL 1.x reimplantando seu código anterior. A Fase 1 é compatível com versões anteriores da KCL 1.x e não cria nenhuma entrada específica de migração na tabela de concessão. Nenhuma ferramenta de migração é necessária. Para reverter da Fase 1, reimplante o código com sua versão da KCL 1.x para todos os operadores.
Importante
A Fase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) é uma alteração significativa para a reversão. Depois que o aplicativo entra na Fase 2, as entradas sem concessão (WORKER_METRIC_STATS e Migration3.0) são gravadas na tabela de concessão e não são compatíveis com versões anteriores da KCL 1.x. Isso impede permanentemente uma reversão direta para a KCL 1.x. É recomendável manter o aplicativo na Fase 1 por um período prolongado para validar a estabilidade antes de prosseguir para a Fase 2.
Reverter da Fase 2 para a Fase 1
Se o aplicativo estiver na Fase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X), você deverá usar a Ferramenta de Migração da KCLCLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1). Este é um processo em duas etapas:
-
Execute a Ferramenta de Migração da KCL
no site do GitHub. -
Reimplante o código com a configuração da Fase 1 (opcional).
Importante
Você não pode reverter dois níveis (da Fase 2 para a Fase 1 e depois para a KCL 1.x). A Ferramenta de Migração da KCL lida apenas com a reversão da Fase 2 para a Fase 1. A ferramenta não exclui entradas que não sejam de concessão da tabela de concessão. Essas entradas não são compatíveis com versões anteriores da KCL 1.x, e é por isso que uma reversão de dois níveis da Fase 2 diretamente para a KCL 1.x não é possível.
Etapa 1: executar a Ferramenta de Migração da KCL
Quando precisar reverter da Fase 2 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X) para a Fase 1 (CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1), execute a Ferramenta de Migração da KCL. A ferramenta realiza as seguintes tarefas:
-
Ela remove o Índice Secundário Global (LeaseOwnerToLeaseKeyIndex) na tabela de concessão no DynamoDB. Esse índice é criado pela KCL 3.5.x+, mas não é necessário quando você reverte para a Fase 1.
-
Ela faz com que todos os operadores funcionem em um modo compatível com a KCL 1.x e comecem a usar o algoritmo de balanceamento de carga usado nas versões anteriores da KCL. Se você tiver problemas com o novo algoritmo de balanceamento de carga na KCL 3.5.x+, isso mitigará o problema imediatamente.
Importante
A entrada de estado do coordenador (Migration3.0) na tabela de concessão não deve ser excluída durante o processo de migração, reversão e avanço.
nota
Todos os operadores no aplicativo de consumidor devem usar o mesmo algoritmo de balanceamento de carga em um determinado momento. A Ferramenta de Migração da KCL garante que todos os operadores no aplicativo de consumidor da KCL 3.5.x+ mudem para o modo compatível com a KCL 1.x para que todos os operadores executem o mesmo algoritmo de balanceamento de carga durante a reversão da implantação para a Fase 1.
Você pode baixar a Ferramenta de Migração da KCL
python3 ./KclMigrationTool.py --regionregion--mode rollback [--application_nameapplicationName] [--lease_table_nameleaseTableName]
Parâmetros
--region-
Substitua
regionpela Região da AWS. --application_name-
Esse parâmetro será obrigatório se você estiver usando o nome padrão para a tabela de concessão. Se você tiver especificado um nome personalizado para a tabela de concessão, poderá omitir esse parâmetro. Substitua
applicationNamepelo nome da aplicação da KCL. A ferramenta usa esse nome para obter o nome de tabela padrão se um nome personalizado não for fornecido. --lease_table_name-
Esse parâmetro é necessário quando você define um nome personalizado para a tabela de concessões na configuração da KCL. Se você estiver usando o nome padrão da tabela, poderá omitir esse parâmetro. Substitua
leaseTableNamepelo nome da tabela personalizada que você especificou para a tabela de concessões.
Etapa 2: reimplantar o código com a configuração da Fase 1 (opcional)
Depois de executar a Ferramenta de Migração da KCL para uma reversão da Fase 2 para a Fase 1, você verá uma destas mensagens:
- Mensagem 1
-
“Rollback completed. O aplicativo estava executando a funcionalidade da Fase 2 (compatível com 2x). Volte para a Fase 1 implantando o aplicativo KCL 3.5.x com a configuração da Fase 1."
Ação necessária: os operadores estavam sendo executados no modo compatível com KCL 1.x (a Fase 2 ainda não havia feito a transição automática para o balanceamento de carga 3.x completo). Reimplante o aplicativo KCL 3.5.x+ com a configuração da Fase 1 (
CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) para os operadores. - Mensagem 2
-
“Rollback completed. O aplicativo da KCL estava executando a funcionalidade da Fase 2 (3x) e foi revertido para o modo Fase 2 (compatível com 2x). Se você não observar a mitigação após um curto período, volte para a Fase 1 implantando o aplicativo KCL 3.5.x com a configuração da Fase 1."
Ação necessária: os operadores fizeram a transição automática para o balanceamento de carga completo da KCL 3.x e a Ferramenta de Migração da KCL os reverteu para o modo compatível com a KCL 1.x. Se o problema for resolvido, você não precisa reimplantar. Se o problema persistir, reimplante o aplicativo KCL 3.5.x+ com a configuração da Fase 1 (
CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X_PHASE1) para os operadores.