Atualização do warehouse

A atualização do warehouse é uma etapa que pode ser chamada diretamente após a etapa Pausa do conector. Esta etapa permite ao usuário atualizar o warehouse, configurado durante Connector Configuration, que é usado para executar tarefas controladas por SDK. Ao substituir com lógica personalizada, este procedimento precisa ser substituído para especificar um manipulador Java personalizado.

Chamar este procedimento requer que o usuário tenha a função do aplicativo ADMIN atribuída.

A etapa de atualização do warehouse consiste internamente em várias fases. Alguns deles são totalmente personalizáveis e, por padrão, não fazem nada. As fases são as seguintes:

  1. Validação de status

  2. Validação de entrada

  3. Retorno de chamada interno

  4. Retorno de chamada de SDK

  5. Atualização de configuração

Requisitos

A configuração do warehouse requer que pelo menos os seguintes arquivos sql sejam executados durante a instalação do aplicativo nativo:

  • core.sql

  • configuration/app_config.sql

  • configuration/connector_configuration.sql

  • configuration/update_warehouse.sql

Validação de status

Para executar a atualização do warehouse, o status interno do conector precisa ser PAUSED.

Esta validação não pode ser substituída nem usando o UpdateWarehouseHandlerBuilder, nem sobrescrevendo o procedimento armazenado. No entanto, é possível implementar um manipulador personalizado, que não terá esse tipo de validação.

Validação de entrada

A entrada precisa ser uma String contendo o novo warehouse. Este warehouse fornecido é então validado usando uma implementação de UpdateWarehouseInputValidator. Por padrão, as seguintes validações são executadas, cada uma gerando uma exceção se os critérios necessários não forem atendidos:

  1. Validando se o warehouse fornecido é um identificador Snowflake válido.

  2. Validando se o novo warehouse é diferente do já configurado.

  3. Validando se a instância do aplicativo pode acessar o novo warehouse (usando a consulta SHOW WAREHOUSES).

Esta etapa de validação de entrada só pode ser personalizada usando o UpdateWarehouseHandlerBuilder e construir uma nova instância de manipulador personalizada.

Retorno de chamada interno

O retorno de chamada interno também é uma etapa personalizável. Por padrão, ele invoca o procedimento PUBLIC.UPDATE_WAREHOUSE_INTERNAL, cuja implementação padrão retorna 'response_code': 'OK'. Esta etapa pode ser usada para fornecer lógica personalizada para o processo de atualização do warehouse, por exemplo, alterando as tarefas criadas pelo desenvolvedor do aplicativo. O retorno de chamada pode ser substituído por meio do script sql ou usando o UpdateWarehouseHandlerBuilder para fornecer uma implementação personalizada da interface UpdateWarehouseCallback.

Retorno de chamada de SDK

O retorno de chamada do SDK é semelhante à fase de retorno de chamada interna. Sua finalidade é atualizar os componentes controlados por SDK, por exemplo, tarefas criadas pelo reator de tarefa.

Esta validação não pode ser substituída pelo uso do UpdateWarehouseHandlerBuilder, nem sobrescrevendo o procedimento armazenado. É possível implementar um manipulador personalizado, que não terá esse tipo de validação, mas é altamente desencorajado.

Atualização de configuração

Depois que as validações e retornos de chamada forem aprovados com sucesso, o novo warehouse será salvo na tabela APP_CONFIG interna. O serviço responsável por isso salvará o warehouse fornecido sob a chave connector_configuration, substituindo o valor configurado anteriormente.

Visualização da configuração

Há uma exibição PUBLIC.CONNECTOR_CONFIGURATION disponível para as funções do aplicativo ADMIN e VIEWER, que retorna a configuração atual da tabela APP_CONFIG interna.

Resposta

Resposta bem-sucedida

Se o procedimento for concluído com sucesso, ele retornará uma resposta com o código de resposta OK:

{
  "response_code": "OK"
}
Copy

Resposta de erro

Em caso de erro, a resposta tem o seguinte formato:

{
  "response_code": "<ERROR_CODE>",
  "message": "<error message>"
}
Copy

Possíveis códigos de erro incluem:

  • INVALID_CONNECTOR_STATUS - Status do conector inválido. Status esperado: [PAUSED]

  • INTERNAL_ERROR - Algo deu errado internamente, a mensagem deve ser descritiva

  • PROCEDURE_NOT_FOUND - O procedimento que foi chamado não existe

  • UNKNOWN_SQL_ERROR - Este erro ocorre quando algo inesperado acontece ao chamar procedimentos internos

  • INVALID_RESPONSE - Este erro ocorre quando a resposta recebida do procedimento interno não contém response_code ou uma resposta de erro não contém message, mas contém response_code

  • UNKNOWN_ERROR - Significa que algo inesperado deu errado (a mensagem de exceção lançada é encaminhada)

  • EMPTY_IDENTIFIER - O identificador fornecido é um valor NULL ou uma cadeia de caracteres vazia

  • INVALID_IDENTIFIER - O identificador do warehouse fornecido não é válido

  • WAREHOUSE_ALREADY_USED - O warehouse fornecido já está sendo usado pelo aplicativo

  • INACCESSIBLE_WAREHOUSE - O warehouse fornecido não pode ser usado para acessar a instância do aplicativo

  • Códigos de erro personalizados recebidos do procedimento UPDATE_WAREHOUSE_INTERNAL - definido pelo desenvolvedor do conector