Fehler bei Bulk-Insert

Thema wurde von Michael W., 14. Dezember 2020 erstellt.

  1. Michael W.

    Michael W. Aktives Mitglied

    Registriert seit:
    29. Dezember 2011
    Beiträge:
    37
    Danke erhalten:
    0
    Danke vergeben:
    3
    #1 Michael W., 14. Dezember 2020
    Zuletzt bearbeitet: 14. Dezember 2020
    Hallo zusammen,

    ich muß täglich rund 17.000 Artikel vom ERP in 10 Gambio-Shops exportieren bzw. synchronisieren. Hier ist natürlich aus Performancegründen eine Bulk-Verarbeitung sehr wichtig, da die API ca. 5 Sekunden pro Artikel von request bis response benötigt, wenn man das einzeln machen würde...
    Leider erhalte ich beim Upload des product-Arrays eine Fehlermeldung vom Server, daß ich die Product Record ID nicht mit übergeben hätte. Das habe ich jedoch getan und der einzelne Upload der Artikel funktionert auch (außer, daß es eben ca. 5 Sekunden pro Artikel dauert).

    Folgendes Vorgehen habe ich derzeit in einer Schleife:
    - Erstellung eines product-Objekts mit allen Properties gem. Definition, inkl. ID - zumindest die "required"
    - Hinzufügen des generierten product-Objekts zu einer List<product>
    - Nach Erreichen einer Anzahl X (zum testen = 5) diese Liste serialisieren und requesten
    - Antwort: BadRequest, Code 400, "Product record ID was not provided or is invalid: NULL"

    So übergebe ich das GXProductArray:
    upload_2020-12-14_10-24-48.png

    Ich habe in dem ganzen Objekt nicht einmal irgendwo NULL...

    Eingesetzte Sprache ist C#, Version in allen Shops ist 3.10.0.5

    Hat jemand eine Idee woran das liegt bzw. was ich falsch mache? Ich altere hierbei gerade in Lichtgeschwindigkeit ;-)

    Danke vorab!

    EDIT: Der Aufruf findet wie folgt statt:
    PUT https://gambio-shop.de/shop1/api.php/v2/products
     
  2. Michael W.

    Michael W. Aktives Mitglied

    Registriert seit:
    29. Dezember 2011
    Beiträge:
    37
    Danke erhalten:
    0
    Danke vergeben:
    3
    Folgende Ergänzungen habe ich noch:
    • Ich habe es mit einem string[] sowie einem Dictionary<product> anstelle einer Liste versucht. Vom API wird alles akzeptiert, aber hat leider dasselbe Ergebnis mit exakt derselben Meldung.
    • Serialisieren jedes einzelnen product und erst dann in string[], Dictionary oder Liste packen hilft auch nicht
    • Zum Spaß habe ich sogar die Reihenfolge der Properties meiner product-Klasse geändert und bspw. die id an die erste Stelle gesetzt. Hat erwartungsgemäß nichts geholfen (hätte mich auch gewundert, aber was macht man nicht alles aus Verzweiflung...)
    • Alle möglichen Server logs inkl. aller Queries aktiviert. Dort leider auch nichts brauchbares.

    Mir fällt jetzt langsam echt nichts mehr ein, außer daß es ggf. noch ein Bug in meiner Version sein könnte... Update ist aber leider aufgrund diverser Abhängigkeiten nicht ohne weiteres möglich. Benutzt sonst niemand Bulk-Create oder -Update?

    @Moritz (Gambio): Hast Du vielleicht noch eine Idee?
     
  3. Anonymous

    Anonymous Administrator
    Mitarbeiter

    Registriert seit:
    26. April 2011
    Beiträge:
    769
    Danke erhalten:
    644
    Danke vergeben:
    165
    @Michael W. Wir haben das grad mal mit einer aktuellen Shopversion geprüft und konnten dabei keine Probleme feststellen. Hab auch noch einmal in der Dokumentation nachgesehen und das Bulk Update von Artikeln ist erst mit der Shopversion 3.12 eingeführt worden.

    (Link nur für registrierte Nutzer sichtbar.)

    (Link nur für registrierte Nutzer sichtbar.)

    Also ein Update auf mindestens 3.12 oder neuer sollte das Problem lösen.
     
  4. Michael W.

    Michael W. Aktives Mitglied

    Registriert seit:
    29. Dezember 2011
    Beiträge:
    37
    Danke erhalten:
    0
    Danke vergeben:
    3
    @Till (Gambio) Oh je, das ist ja jetzt mal richtig blöd gelaufen...
    Aufgrund meiner eingesetzten Version 3.10.0.5 habe ich nicht die Doku für die 3.10.0.0 genommen, sondern die Doku für die 3.11.1.0, da die 3.10.3.0 (als nächst höhere, die ich meist verwende) nicht funktioniert hat. Genau dazwischen ist diese Funktionalität offensichtlich dazugekommen.

    Vielen herzlichen Dank für diesen Hinweis! Auf die Idee bin ich leider nicht gekommen.