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_usere$rds_databasesã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 operadorLIKE)
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