Pular para conteúdo

Instruções para retroceder timestamps dos conectores

Em casos de indisponibilidade prolongada da plataforma, pode ser necessário retroceder os conectores por um período de tempo para garantir o reprocessamento de registros que possam ter sido indevidamente perdidos com status de SERVER_ERROR. A API de monitoramento (ConnectorAPI) possui funcionalidades para investigar o progresso das instâncias ao longo do tempo, permitindo emitir configurações remotas para retroceder as timestamps de controle das extrações a um período anterior no tempo. Para automatizar a execução do processo para muitas instâncias, é sugerido o seguinte método:

Criação de script SQL para geração do request (curl) via banco de dados

cat <<EOF > retroceder_conectores.sql
select 
  'curl -v -H "Authorization: Bearer ' || :token || '" -H "Content-Type: application/json" -X POST -d ''{"timestampList":[' || string_agg(sel."TIMESTAMP_OBJECT", ',') || ']}'' <https://ipes.tech:8243/connector/'> || sel."CO_ORGANIZATION" || '/instance/' || sel."CO_INSTANCE" || '/config' "CURL_COMMAND"
from (
  select 
    con."CO_ORGANIZATION",
    con."CO_INSTANCE",
    '{"id":"' || ts."CO_TYPE" || '","value":"' || substring(to_char(min(ts."DT_TIMESTAMP"), 'YYYY-MM-DD') from 1 for 10) || 'T00:00:00.000Z"}' "TIMESTAMP_OBJECT"
  from "TB_CONNECTOR" con 
  inner join "TB_STATUS" stat on stat."CO_CONNECTOR" = con."CO_SEQ" 
  inner join "RL_STATUS_TIMESTAMP" ts on ts."CO_STATUS" = stat."CO_SEQ" 
  where
    stat."DT_CREATE_TIME"::varchar like :data_alvo
  group by con."CO_ORGANIZATION", con."CO_INSTANCE", ts."CO_TYPE" 
) sel 
group by sel."CO_ORGANIZATION", sel."CO_INSTANCE"
EOF

Execução parametrizada

Neste momento, o arquivo anterior é executado via psql. Atenção às variáveis descritas a seguir:

psql -h $rds_host -U $rds_user -o retroceder_conectores.sh -t -A -F"," -v token="'7bc4f74e-30ff-4d56-8fbb-f1a7f0dfde1f'" -v data_alvo="'2021-01-29%'" $rds_database < retroceder_conectores.sql
  • $rds_host, $rds_user e $rds_database são os parâmetros de conexão com o banco de dados da API (omitidos aqui por segurança)

  • token é o token OAuth2 (fictício no trecho acima) para consumo da API pelo WSO2 API Manager (com usuário e aplicação subscritos)

  • data_alvo é o instante em que a plataforma estava funcional/para o qual os conectores devem retroceder (avaliado via operador LIKE)

A saída do script criará um arquivo retroceder_conectores.sh para retroceder as instâncias disponíveis via curl. Basta executá-lo via bash.

bash retroceder_conectores.sh