Solução de problemas do Openflow Connector for Salesforce Bulk API¶
Nota
O conector está sujeito aos Termos do conector Snowflake.
Este tópico descreve como solucionar problemas do Openflow Connector for Salesforce Bulk API.
Monitoramento¶
Para rastrear a quantidade de dados sincronizados do Salesforce para o Snowflake, consulte a tabela de eventos. A consulta de exemplo a seguir recupera logs relevantes dos últimos 30 minutos:
Solução de problemas¶
Use as informações a seguir para solucionar problemas com o conector.
Erros de autenticação e OAuth¶
O conector usa o OAuth 2.0 JWT Bearer Flow para autenticar com o Salesforce. Erros de autenticação geralmente ocorrem durante a configuração inicial e podem ser diagnosticados usando o recurso de verificação no serviço do controlador antes de iniciar o conector.
Erro invalid_grant¶
O erro invalid_grant indica que o Salesforce rejeitou a solicitação de token OAuth. As causas comuns incluem:
Tipo de fluxo OAuth incorreto. O app cliente externo no Salesforce não está com a caixa de seleção Enable JWT Bearer Flow marcada. O conector requer esse fluxo específico. Outros fluxos OAuth (como o fluxo de código de autorização) não são compatíveis. Consulte Criação de um aplicativo cliente externo no Salesforce.
Chave privada e certificado incompatíveis. A chave privada configurada no conector (o parâmetro Connected App Key) não corresponde ao certificado público carregado no app cliente externo no Salesforce.
Chave do consumidor incorreta. O parâmetro OAuth2 Client ID não corresponde ao Consumer Key do app cliente externo onde o certificado foi carregado.
Credenciais mistas de vários apps.** Se você criou vários apps cliente externos ou experimentou configurações diferentes, o ID do cliente, o certificado e a chave privada podem pertencer a apps diferentes. Os três devem vir do mesmo app cliente externo.
App conectado obsoleto. O Salesforce descontinuou os apps conectados em favor dos apps clientes externos. Se você estiver usando um app conectado, o Snowflake recomenda criar um novo app cliente externo.
URL de ponto de extremidade do token incorreto.** O parâmetro OAuth2 Token Endpoint URL deve apontar para a instância correta do Salesforce. Por exemplo:
https://myCompany.my.salesforce.com/services/oauth2/token.Público incorreto.** O parâmetro OAuth2 Audience deve ser definido como
https://login.salesforce.compara ambientes de produção ouhttps://test.salesforce.compara ambientes de teste e sandboxes.
Erros de permissão¶
Se o token JWT for gerado com sucesso, mas o usuário não tiver permissões, você verá um erro de permissão ou autorização. Isso significa que o JWT Bearer Flow está funcionando, mas o usuário do Salesforce (o sujeito do OAuth2) não está autorizado a usar o app cliente externo.
Para resolver esse problema:
No Salesforce, acesse a guia Policies do app cliente externo.
Verifique se Permitted Users está definido como Admin approved users are pre-authorized.
Verifique se os perfis ou conjuntos de permissões atribuídos na seção App Policies incluem o usuário especificado no parâmetro OAuth2 Subject do conector.
Para obter mais detalhes, consulte Aprovar um aplicativo cliente para um usuário.
Verificar o estado do conector¶
Você pode examinar o estado do conector para garantir que os dados estejam sendo replicados conforme esperado. O conector mantém um estado de operações atuais e passadas para garantir que nenhuma alteração do Salesforce seja perdida e para repetir consultas de trabalhos em massa em caso de falhas.
Para visualizar o estado:
Clique com o botão direito do mouse na tela e selecione Controller services.
Localize o serviço do controlador chamado Salesforce Bulk Jobs State.
No menu Salesforce Bulk Jobs State, clique em View state.
O estado é um conjunto de pares chave/valor em que a chave é o tipo de objeto do Salesforce. Por exemplo, o estado do objeto Account pode ser parecido com o exemplo a seguir:
O status pode ser uma das seguintes opções:
IN_PROGRESSCOMPLETEDFAILEDABORTED
Se o status for IN_PROGRESS, um FlowFile ainda está sendo processado para esse tipo de objeto.
Cuidado
Não exclua arquivos de fluxo manualmente. Isso pode fazer com que um trabalho permaneça no status IN_PROGRESS indefinidamente porque o estado não pode ser atualizado manualmente.
Caso isso aconteça, será necessário realizar um recarregamento completo para esse tipo de objeto.
Forçar um carregamento completo para um determinado tipo de objeto¶
Para forçar o conector a executar uma atualização completa para um ou mais tipos de objetos:
Interrompa todos os processadores no fluxo.
Certifique-se de que não há FlowFiles sendo processados.
Clique com o botão direito do mouse na tela e selecione Disable all controller services.
Acesse Controller services e abra o estado do serviço do controlador chamado Salesforce Bulk Jobs State.
Execute uma das seguintes ações:
Selecione Clear state para limpar todo o estado. Isso força um carregamento completo para todos os tipos de objetos configurados buscados pelo conector.
Selecione o ícone de lixeira ao lado de um tipo de objeto específico para limpar o estado apenas para um tipo de objeto específico. Isso força um carregamento completo desse tipo de objeto específico durante a próxima execução do conector.
Na tela, clique com o botão direito do mouse, selecione Enable all controller services e inicie todos os processadores.
Se um tipo de objeto permanecer no status IN_PROGRESS¶
Se o estado de um determinado tipo de objeto estiver preso em IN_PROGRESS e não haja FlowFiles em execução para esse tipo de objeto, pode ser que um FlowFile tenha sido excluído manualmente antes de atualizar o status.
Nesse caso, você deve executar um carregamento completo para esse tipo de objeto para garantir que o conector capture todos os eventos.
Se o estado estiver preso em IN_PROGRESS mas não houve exclusão manual de FlowFiles entre em contato com o Suporte Snowflake.