scieloorg / opac-airflow

Componente de coleta e identificação das alterações realizadas nos metadados do SciELO
BSD 2-Clause "Simplified" License
3 stars 11 forks source link

Execução de sincronização de fascículo para o Kernel com todos os pacotes SPS de um processamento #188

Open patymori opened 4 years ago

patymori commented 4 years ago

Descrição da nova funcionalidade

Eu, como Operador da nova plataforma SPF, gostaria que a execução e reexecução de sincronização de um fascículo para o Kernel com todos os pacotes SPS daquele processamento, então será possível garantir a execução e reexecução da sincronização de todos os pacotes do fascículo, caso haja falhas.

Critérios de aceitação

Anexos

n/a

Referências

.

patymori commented 4 years ago

Proposta de Solução

A nova DAG fará a sincronização por bundle, mantendo a ordem de todos os pacotes relacionados, para garantir que não haja regressão nos dados sincronizados com o Kernel. Dessa forma, também se torna possível efetuar a sincronização dos bundles de forma paralela.

A navegação da DAG ficaria dessa forma:

  1. DAG principal Ficará responsável por mover os pacotes de SPS para o diretório PROC do Airflow, organizar os pacotes por bundle e iniciar a a SubDag de sincronização
Screen Shot 2020-09-29 at 14 15 30
  1. SubDag sync_documents Responsável por iniciar a sincronização para cada bundle
Screen Shot 2020-09-29 at 12 37 37
  1. SubDag do Bundle Responsável por executar a sincronização de cada pacote do bundle, respeitando a ordem dos pacotes
Screen Shot 2020-09-29 at 12 38 34 Screen Shot 2020-09-29 at 12 39 08 Screen Shot 2020-09-29 at 12 39 24
  1. SubDag do Pacote Responsável por executar as tarefas de sincronização do pacote, as mesmas executadas pela DAG sync_documents_to_kernel
Screen Shot 2020-09-29 at 12 38 47

Pontos a considerar

robertatakenaka commented 4 years ago

@patymori não estou identificando nenhum problema nesta proposta. Então, acho que pode seguir.

joffilyfe commented 4 years ago

@patymori eu gostei da sua proposta de solução. Você avaliou outras formas de implementação que pudessem manter a compatibilidade entre execuções e também entre o nosso ecossistema de monitoramento?

patymori commented 4 years ago

Conversando com @joffilyfe e @jamilatta, uma outra abordagem foi apresentada: mais simples e sem quebra de compatibilidade com as integrações. As DAGs existentes seriam preservadas e a mudança para a sincronização seria na estrutura dos dados no XCom, fazendo com que a DAG sync_documentos_to_kernel passe a fazer a sincronização de n pacotes para um mesmo bundle, e que cada uma das tarefas seria adaptada para lidar com esta estrutura, mantendo a ordem da sincronização dos pacotes como hoje.

As estruturas de dados pensadas ficariam desta forma:

sps_packages = [
    {"rba-v1n1": ["rba-1-1-1.zip", "rba-1-1-2.zip", "rba-1-1-3.zip"]},
    {"rba-v1n2": ["rba-1-2-1.zip", "rba-1-2-2.zip"]},
    {"bjb-v1n1": ["bjb-1-1-1.zip", "bjb-1-1-2.zip", "bjb-1-1-3.zip", "bjb-1-1-4.zip"]}
    {"bjb-v1n2": ["bjb-1-2-1.zip"]}
]

xmls_to_preserve = [
    {"rba-1-1-1.zip": ["document-1.xml", "document-2.xml"]},
    {"rba-1-1-2.zip": ["document-2.xml"]},
    {"rba-1-1-3.zip": ["document-1.xml", "document-2.xml", "document-3.xml"]}
]

Vantagem:

Desvantagens:

Vantagens da primeira proposta:

Desvantagens:

Screen Shot 2020-09-30 at 12 10 39

Por favor, verifiquem se não esqueci de mais nada.

joffilyfe commented 4 years ago

@patymori eu acho que você pode seguir com a proposta. Talvez nós só tenhamos que alterar a URL no grafana para que a abertura da DAG funcione.

patymori commented 4 years ago

@patymori eu acho que você pode seguir com a proposta. Talvez nós só tenhamos que alterar a URL no grafana para que a abertura da DAG funcione.

@joffilyfe e sobre a quebra de compatibilidade com as sincronizações anteriores? Acha que as vantagens da proposta são maiores do que a desvantagem de ter que manter as DAGs atuais?

joffilyfe commented 4 years ago

@patymori eu acho que você pode seguir com a proposta. Talvez nós só tenhamos que alterar a URL no grafana para que a abertura da DAG funcione.

@joffilyfe e sobre a quebra de compatibilidade com as sincronizações anteriores? Acha que as vantagens da proposta são maiores do que a desvantagem de ter que manter as DAGs atuais?

Nós só precisaríamos manter a dag atual por algum tempo, nós temos pouco mais de um dois meses de processamento, nem é algo tão relevante assim. Portanto eu acho que as vantagens são maiores sim.

jamilatta commented 4 years ago

@patymori e @joffilyfe concordo com a solução e acho que ficou mais fácil a implementação

Mas em caso de falha no processamento de alguns dos XMLs toda a DAG falhará?

patymori commented 4 years ago

@patymori e @joffilyfe concordo com a solução e acho que ficou mais fácil a implementação

Mas em caso de falha no processamento de alguns dos XMLs toda a DAG falhará?

@jamilatta, não sei se entendi qual das soluções você concorda. Pode deixar explícito se é a primeira ou a segunda proposta?

O tratamento para a falha na sincronização dos documentos de um pacote continuaria da mesma forma que agora, isso não seria alterado.

jamilatta commented 4 years ago

@patymori

Irei ler novamente para te dá um parecer mais elaborado!

patymori commented 4 years ago

Proposta 3 de solução

Coleta dos pacotes SPS pela scilista

Similar à pre_sync_documents_to_kernel, com a diferença de que organiza os pacotes por bundles e inicia DAGs para a extração das informações por bundles com os respectivos pacotes

Extração das informações dos pacotes SPS

Armazena as informações de todos os documentos necessárias para fazer a leitura nos pacotes, mantendo a ordenação dos pacotes, e a sincronização com o Kernel e Minio. Uma informação adicional é a operação a ser realizada: deleção ou registro/atualização.

Sincronização dos documentos para o Kernel e o MinIO

Responsável por deletar ou carregar os documentos no Kernel e no MinIO através dos dados extraídos e por documento. Realizará a operação identificada no XML e a atualização no bundle.

Vantagens