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:
Validação de status
Validação de entrada
Retorno de chamada interno
Retorno de chamada de SDK
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:
Validando se o warehouse fornecido é um identificador Snowflake válido.
Validando se o novo warehouse é diferente do já configurado.
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"
}
Resposta de erro¶
Em caso de erro, a resposta tem o seguinte formato:
{
"response_code": "<ERROR_CODE>",
"message": "<error message>"
}
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 descritivaPROCEDURE_NOT_FOUND
- O procedimento que foi chamado não existeUNKNOWN_SQL_ERROR
- Este erro ocorre quando algo inesperado acontece ao chamar procedimentos internosINVALID_RESPONSE
- Este erro ocorre quando a resposta recebida do procedimento interno não contémresponse_code
ou uma resposta de erro não contémmessage
, mas contémresponse_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 vaziaINVALID_IDENTIFIER
- O identificador do warehouse fornecido não é válidoWAREHOUSE_ALREADY_USED
- O warehouse fornecido já está sendo usado pelo aplicativoINACCESSIBLE_WAREHOUSE
- O warehouse fornecido não pode ser usado para acessar a instância do aplicativoCódigos de erro personalizados recebidos do procedimento
UPDATE_WAREHOUSE_INTERNAL
- definido pelo desenvolvedor do conector