Problembehandlung beim Openflow Connector for Salesforce Bulk API

Unter diesem Thema wird die Behandlung von Problemen bei Openflow Connector for Salesforce Bulk API beschrieben.

Überwachung

Um die Datenmenge zu verfolgen, die von Salesforce zu Snowflake synchronisiert wird, fragen Sie die Ereignistabelle ab. Die folgende Beispielabfrage ruft die relevanten Protokolle der letzten 30 Minuten ab:

SELECT
  timestamp,
  Deployment_ID,
  Runtime_Key,
  parsed_log:level as log_level,
  parsed_log:loggerName as logger,
  parsed_log:formattedMessage as message,
  parsed_log
FROM (
  SELECT
    timestamp,
    resource_attributes:"openflow.dataplane.id" as Deployment_ID,
    resource_attributes:"k8s.namespace.name" as Runtime_Key,
    TRY_PARSE_JSON(value) as parsed_log
  FROM OPENFLOW.TELEMETRY.EVENTS
  WHERE true
    AND timestamp > dateadd('minutes', -30, sysdate())
    AND record_type = 'LOG'
    AND resource_attributes:"k8s.namespace.name" like 'runtime-%'
  ORDER BY timestamp DESC
)
WHERE true
  AND logger = 'org.apache.nifi.processors.standard.LogMessage'
  AND message LIKE '%SALESFORCE_BULK_API%';

Problembehandlung

Verwenden Sie die folgenden Informationen, um Probleme mit dem Konnektor zu beheben.

Authentifizierungs- und OAuth-Fehler

Der Konnektor verwendet den JWT-Bearer-Ablauf von OAuth 2.0 zum Authentifizieren bei Salesforce. Authentifizierungsfehler treten normalerweise bei der Ersteinrichtung auf und können mithilfe des Verifizierungs-Features für den Controller-Dienst diagnostiziert werden, bevor Sie den Konnektor starten.

invalid_grant-Fehler

Der invalid_grant-Fehler zeigt an, dass Salesforce die OAuth-Token-Anforderung abgelehnt hat Zu den häufigsten Ursachen gehören:

  • Falscher OAuth-Ablauftyp. In der externen Client-App in Salesforce ist das Kontrollkästchen Enable JWT Bearer Flow nicht aktiviert. Der Konnektor erfordert diesen speziellen Ablauf. Andere OAuth-Abläufe (wie der Autorisierungscodeablauf) werden nicht unterstützt. Siehe Erstellen einer externen Client-App in Salesforce.

  • Privater Schlüssel und Zertifikat stimmen nicht überein. Der im Konnektor konfigurierte private Schlüssel (der Connected App Key-Parameter) stimmt nicht mit dem öffentlichen Zertifikat überein, das in die externe Client-App in Salesforce hochgeladen wurde.

  • Falscher Verbraucherschlüssel. Der:ui:OAuth2 Client ID-Parameter stimmt nicht mit dem Consumer Key der externen Client-App überein, in die das Zertifikat hochgeladen wurde.

  • Gemischte Anmeldeinformationen von mehreren Apps. Wenn Sie mehrere externe Client-Apps erstellt oder mit verschiedenen Konfigurationen experimentiert haben, gehören die Client-ID, das Zertifikat und der private Schlüssel möglicherweise zu verschiedenen Apps. Alle drei müssen aus derselben externen Client-App stammen.

  • Veraltete verbundene App. Salesforce hat verbundene Apps durch externe Client-Apps ersetzt. Wenn Sie eine verbundene App verwenden, empfiehlt Snowflake, stattdessen eine neue externe Client-App zu erstellen.

  • Falsche Token-Endpunkt-URL. Der:ui:OAuth2 Token Endpoint URL-Parameter muss auf die korrekte Salesforce-Instanz verweisen. Beispiel: https://myCompany.my.salesforce.com/services/oauth2/token.

  • Falsche Zielgruppe. Der OAuth2 Audience-Parameter muss auf https://login.salesforce.com für Produktionsumgebungen oder auf https://test.salesforce.com für Sandboxen und Testumgebungen gesetzt sein.

Berechtigungsfehler

Wenn das JWT-Token erfolgreich generiert wurde, der Benutzende aber keine Berechtigungen hat, sehen Sie einen Berechtigungs- oder Autorisierungsfehler. Dies bedeutet, dass der JWT-Bearer-Ablauf zwar funktioniert, der Salesforce-Benutzende (das OAuth2-Subjekt) nicht berechtigt ist, die externe Client-App zu verwenden.

So beheben Sie dieses Problem:

  1. Gehen Sie in Salesforce zur Registerkarte Policies der externen Client-App.

  2. Überprüfen Sie, ob Permitted Users auf Admin approved users are pre-authorized gesetzt ist.

  3. Überprüfen Sie, ob die im Abschnitt App Policies zugewiesenen Profile oder Berechtigungssätze den im OAuth2 Subject-Parameter des Konnektors angegebenen Benutzenden enthalten.

Weitere Details dazu finden Sie unter Genehmigen der Client-App für einen Benutzer.

Überprüfen des Konnektorstatus

Sie können den Zustand des Konnektors untersuchen, um sicherzustellen, dass die Daten wie erwartet repliziert werden. Der Konnektor behält den Status der aktuellen und vergangenen Operationen bei, um sicherzustellen, dass keine Salesforce-Änderungen übersehen werden, und um Abfragen von Massenjobs zu wiederholen, wenn Fehler auftreten.

So zeigen Sie den Status an:

  1. Klicken Sie mit der rechten Maustaste auf den Ansichtsbereich, und wählen Sie Controller services aus.

  2. Suchen Sie den Controller-Dienst namens Salesforce Bulk Jobs State.

  3. Klicken Sie im Menü Salesforce Bulk Jobs State auf View state.

Der Status ist ein Satz von Schlüssel/Wert-Paaren, wobei der Schlüssel vom Typ Salesforce-Objekt ist. Beispiel: Der Status des Account-Objekts könnte wie im folgenden Beispiel aussehen:

{"previousLast":"2025-09-30T09:41:23.484406926Z","currentLast":"2025-09-30T09:41:23.484406926Z","status":"COMPLETED"}

Der status kann einer der folgenden Werte sein:

  • IN_PROGRESS

  • COMPLETED

  • FAILED

  • ABORTED

Falls der Status IN_PROGRESS ist, wird noch eine FlowFile für diesen Objekttyp verarbeitet.

Vorsicht

Löschen Sie Ablaufdateien nicht manuell. Dies kann dazu führen, dass ein Job auf unbestimmte Zeit im Status IN_PROGRESS verbleibt, da der Status nicht manuell aktualisiert werden kann.

Wenn dies der Fall ist, müssen Sie ein vollständiges Neuladen für diesen Objekttyp ausführen.

Erzwingen eines vollständiges Ladens für einen bestimmten Objekttyp

Um den Konnektor zu zwingen, eine vollständige Aktualisierung für einen oder mehrere Objekttypen durchzuführen:

  1. Stoppen Sie alle Prozessoren im Ablauf.

  2. Stellen Sie sicher, dass keine FlowFiles, die in der Schwebe sind, verarbeitet werden.

  3. Klicken Sie mit der rechten Maustaste auf den Ansichtsbereich, und wählen Sie Disable all controller services aus.

  4. Wechseln Sie zu Controller services, und öffnen den Status des Controller-Dienstes namens Salesforce Bulk Jobs State.

  5. Führen Sie eine der folgenden Aktionen aus:

    • Wählen Sie Clear state aus, um den gesamten Zustand zu löschen. Dies erzwingt ein vollständiges Laden für alle konfigurierten Objekttypen, die vom Konnektor abgerufen werden.

    • Wählen Sie das Papierkorbsymbol neben einem bestimmten Objekttyp aus, um den Status nur für einen bestimmten Objekttyp zu löschen. Dadurch wird bei der nächsten Ausführung des Konnektors ein vollständiges Laden dieses spezifischen Objekttyps erzwungen.

  6. Klicken Sie im Ansichtsbereich mit der rechten Maustaste, wählen Sie Enable all controller services aus, und starten Sie dann alle Prozessoren.

Wenn ein Objekttyp im Status IN_PROGRESS bleibt

Wenn ein bestimmter Objekttyp im Status IN_PROGRESS „feststeckt“ und es keine FlowFiles in der Schwebe für diesen Objekttyp gibt, wurde möglicherweise eine FlowFile manuell gelöscht, bevor der Status aktualisiert werden konnte.

In diesem Fall müssen Sie ein vollständiges Laden für diesen Objekttyp ausführen, um sicherzustellen, dass der Konnektor alle Ereignisse erfasst.

Wenn der Objekttyp im Status IN_PROGRESS feststeckt, aber keine FlowFiles manuell gelöscht wurden, wenden Sie sich an den Snowflake-Support.