Operações da aplicação em fila

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 6 min. de leitura
  • APIs de CICD que devem obter a atualização bloqueio/mutex de toda a instância para executar as operações solicitadas são enfileiradas em vez de serem rejeitadas quando a atualização bloqueio/mutex de toda a instância está ocupado pelas outras operações.

    A partir de Tokyo, As APIs do CICD que exigem a obtenção da atualização bloqueio/mutex de toda a instância para executar as operações solicitadas serão enfileiradas em vez de serem rejeitadas quando a atualização bloqueio/mutex de toda a instância está ocupado pelas outras operações. Quando uma solicitação de CICD é recebida, o serviço de CICD correspondente constrói uma operação de aplicação NowMQ (Fila de mensagens do Now) e insira a mensagem na fila usando APIs do NowMQ. As mensagens enfileiradas são pesquisadas pelo trabalho agendado e tratadas uma a uma ou em paralelo se o processamento paralelo estiver habilitado e a operação atender aos critérios necessários.

    Operação da aplicação NowMQ Mensagem

    As mensagens Operation NowMQ da aplicação têm um assunto comum que é "sys.applifecycle.operation". O corpo da mensagem Operation NowMQ da aplicação contém um objeto JSON que inclui o sys_id do rastreador de execução (também consulte como o ID de andamento retornado na resposta da API CICD), o tipo de operação que pode ser um dos seguintes: App_install, plug-in_activation, batch_install, rollback, import_app e apply_changes. Ele também contém informações como ID do plug-in para ativação do plug-in, ID do app ou escopo para instalação da aplicação.

    Rastreador de execução para operação da aplicação

    Quando a mensagem de operação da aplicação NowMQ é construída e inserida, o registro do rastreador de execução da solicitação CICD correspondente é criado e seu sys_id é adicionado ao corpo da mensagem do NowMQ. O rastreador de execução está no estado Pendente inicialmente. A coluna "Detalhes" do Rastreador de execução contém as informações sobre o tipo de operação e os parâmetros de entrada importantes para a solicitação de CICD. Sua coluna "Mensagem" contém as informações sobre a posição na fila. Quando a fila é pausada, a mensagem é prefixada com "[Fila de operação da aplicação está pausada]".

    Rastreadores de execução de operações da aplicação de amostra quando a fila está em execução. Fila de operação da aplicação de amostra em execução.

    Rastreadores de execução de operação da aplicação de amostra quando a fila está pausada.Rastreadores de execução de operações da aplicação de amostra quando a fila está pausada.

    Nota:
    As operações que estão em um estado pendente não serão exibidas no histórico recente.
    Histórico recente de rastreadores de execução de operações de aplicações de amostra. O histórico recente exibe operações históricas que foram enfileiradas e processadas nas últimas 24 horas.

    O rastreador de histórico recente mostra execuções

    Gerenciar fila de operações da aplicação

    Enquanto a instalação manual de produtos de todas as aplicações está em fila, a instalação manual de uma aplicação da IU, como Todas as aplicações ou o Gerenciador de aplicações, não está em fila.

    Às vezes, a instância pode estar recebendo, enfileirando e manipulando muitas solicitações de CICD, o que pode fazer com que a instalação manual da IU fique faminta por atualização bloqueio/mutex de toda a instância . Quando isso acontece, o administrador pode pausar temporariamente a fila de operação da aplicação.

    O administrador pode gerenciar a fila de operação da aplicação por meio da página de IU Diagnóstico do sistema->Fila de operação da aplicação. No painel "Status da fila de operação", o administrador pode pausar ou retomar a fila. O administrador também pode cancelar o rastreador de execução pendente. Isso eventualmente removerá a mensagem correspondente na fila do NowMQ pelo trabalho Monitor de integridade da fila de operação do app.

    Página de IU da fila de operação da aplicação

    Exemplo de página de IU da fila de operação da aplicação. O administrador pode clicar no botão em "Status da fila de operação" para pausar ou retomar a fila.Página de iu da fila de operação da aplicação.

    Clique no item de lista "Rastreadores de execução de operações da aplicação", ele abre o formulário Rastreador de execução. Se a mensagem enfileirada estiver pendente na fila, atualize o estado do rastreador de execução para "Cancelado" e salvar a mudança cancelará a solicitação CICD enfileirada correspondente. Observação: Se o estado do rastreador de execução for "Em execução", a solicitação de CICD não poderá ser cancelada.Formulário do rastreador de execução.

    Janela de upgrade e fila de operação da aplicação

    Por padrão, 2 horas (pode ser personalizado por meio da propriedade sys "com.glide.update_operation.queue_upgrade_window") antes do upgrade agendado, a Fila de operações da aplicação interrompe o processamento de mensagens em fila.

    O status da Fila de operações da aplicação é alterado para "Upgrade pausado". Durante esta janela de upgrade, novas solicitações de CICD continuam a ser enfileiradas.Janela de upgrade e fila de operação da aplicação.

    Quando o upgrade é concluído, a Fila de operações da aplicação retoma o processamento das mensagens enfileiradas automaticamente.

    Impacto no pipeline de CICD

    Os contratos de solicitação/resposta existentes para as APIs do CICD não são alterados. A falha na operação devido à atualização bloqueio/mutex de toda a instância Os conflitos observados em uma versão pré-Tóquio não serão vistos. A solicitação é enfileirada e atendida uma a uma ou em paralelo, dependendo do tipo de trabalho.

    CICD com suporte para enfileiramento

    As APIs de CICD a seguir estão enfileiradas para processamento.
    • api/sn_cicd/app_repo/install
    • api/sn_cicd/v1/app_repo/install
    • api/sn_cicd/v2/app_repo/install
    • api/sn_cicd/app_repo/rollback
    • api/sn_cicd/v1/app_repo/install
    • api/sn_cicd/v2/app_repo/rollback
    • api/sn_cicd/sc/apply_changes
    • api/sn_cicd/v1/sc/apply_changes
    • api/sn_cicd/v2/sc/apply_changes
    • api/sn_cicd/app/batch/install
    • api/sn_cicd/sc/import
    • api/sn_cicd/plug-in/plug-in/activate
    • api/sn_cicd/plug-in//rollback

    Paralelize instalações de aplicações e ativações de plug-in

    A partir de Tokyo, as seguintes operações podem ser executadas em paralelo com outras operações.
    • api/sn_cicd/app_repo/install
    • api/sn_cicd/v1/app_repo/install
    • api/sn_cicd/v2/app_repo/install
    • api/sn_cicd/plug-in/plug-in/activate

    Todo o processamento de fila requer um bloqueio/mutex de toda a instância e mantém este mutex até que qualquer operação em fila seja concluída. Este bloqueio é chamado AtualizaçãoMutex e seu status pode ser exibido em sys_mutex tabela. Durante esse tempo, as operações que têm o mesmo bloqueio (instalações de apps, ativações de plug-in, operações de controle de origem) não são executadas por meio da IU. A fila ainda pode ser pausada por meio de Fila de operações da aplicação página para liberar o bloqueio após a conclusão dos trabalhos em execução no momento.

    A paralelização está habilitada por padrão. Ele pode ser desativado usando a propriedade com.glide.update_operation.parallel_operation_enabled e todas as operações serão executadas sequencialmente a partir da fila, como nas versões anteriores.

    Limites na Paralelização

    O processador de fila determina se um trabalho enfileirado pode ser executado. Se um trabalho puder ser executado, ele será agendado para ser coletado por um nó de instância na primeira disponibilidade. Caso contrário, ele será retornado para a fila e o processador avaliará o próximo trabalho na fila para processamento.

    Há um limite para o número máximo de trabalhos que podem ser executados em paralelo, que o padrão é 2. Esta propriedade pode ser alternada por glide.update.app_operation_queue.parallel.max mas lembre-se de que há um limite superior de threads disponíveis para executar a instalação e que o aumento da paralelização requer memória adicional que pode tornar a instância mais lenta para usuários ativos.

    Obtendo bloqueios de recursos

    Os plug-ins e aplicações a seguir não podem ser instalados em paralelo.
    • Quaisquer duas operações que compartilham o mesmo escopo, incluindo personalizações.
    • Quaisquer duas operações que causam mudanças de esquema.
    • Quaisquer duas operações que contenham scripts de correção.

    O processamento de fila determina se esses critérios são atendidos para operações enfileiradas e adia trabalhos não processáveis, se necessário. O ID de andamento do trabalho é atualizado para refletir se a operação está aguardando a obtenção de bloqueios de recursos apropriados. Uma operação em execução mantém uma lista de recursos (escopos, esquema, scripts de correção presentes) na tabela sys_padlock, e a inserção e a liberação desses bloqueios podem ser observadas nesta tabela pelo ID de andamento. Se um trabalho enfileirado for adiado devido à incapacidade de obter bloqueios necessários nos recursos, ele será colocado em um resfriamento para permitir que outras mensagens sejam processadas. O período de resfriamento pode ser modificado com a propriedade com.glide.update_operation.job_cancel_timeout_minutes . O trabalho ainda está na fila e está visível no Fila de operações da aplicação página.

    Se a fila não conseguir baixar um pacote de aplicações ou encontrar um plug-in para verificar os recursos necessários para obter, ela registrará um erro em relação à operação enfileirada. Se a operação falhar ao visualizar seus recursos um determinado número de vezes, o rastreador falhará e o trabalho será removido da fila. O número máximo de vezes é padrão para 3 e pode ser modificado pelo com.glide.update_operation.max_failure_count propriedade.
    Nota:
    A falha ao obter os bloqueios necessários não conta como uma tentativa de falha. Somente erros encontrados, como falha ao baixar um pacote de aplicações da contagem do AppRepo.