CONAN der Erfolg-Zerstörer

Wenn man in der CONAN Build Pipeline folgenden Fehler sieht:

‘NoneType’ object has no attribute ‘token’

so ahnt man noch nicht, dass einem das letztendlich den Tag versauen wird.


Meine Firma möchte nun weiter Projekte auf CONAN migrieren und somit wird einiges an Ressourcen in diese ehrgeizige Ziel investiert.
Und nun, wo die ersten Erfolge hergezeigt werden können, freut man sich über die angewendete Änderung des Buildsystems.

Und dann tauchen plötzlich Fehler auf, die sich niemand erklären kann.

Voraussetzungen

Bibliotheken wie die ZLIB werden angenehmerweise schon im Internet fix fertig als CONAN Paket angeboten. Folglich setzt man eine Abhängigkeit zur externen Quelle des Softwarepaketes.

Wenn ein Build-Prozess läuft, lädt CONAN die neuen Sourcen und Binaries aus dem Internet und integriert sie als Includes für die Kompilierung und das Linken des Projektes.

So die Theorie, die bis vor Kurzem auch gelebte Praxis war. Doch mit der neuen Fehlermeldung 'NoneType' object has no attribute 'token' war dies wohl nicht mehr so.

Das Problem

Nach langem Herumexperimentieren ohne Erfolg, startete ich eine Suche im Internet. Und siehe dar, auch andere Menschen (wenn auch wenige) meldeten Problem mit CONAN beim Zugriff auf externe Quellen.

Und nach vielen vielen gelesenen Beiträgen, poppte plötzlich die Meldung auf, dass dieses Problem an HTTP Umleitungen liegt.

Ja, ernsthaft … CONAN kommt mit HTTP 301/302 Statuscodes nicht klar.
Und offenbar haben die Server-Betreiber unseres CONAN Paketes neulich eine solche Umleitung gesetzt.

Jetzt wird natürlich stets dazu geraten, sofort die neueste Version von CONAN zu installieren, da laufend Fehlerchen dieser Art korrigiert werden, doch das ist im Firmennetzwerk nicht so einfach.
Wer kennt nicht die bürokratischen Hürden einer Konzernstruktur, wenn man “ganz schnell” ein Softwareupgrade einführen möchte.

Die Lösung

Für uns gibt es momentan keine Lösung. Doch wir nutzten einen Workaround.

Die betroffenen CONAN Pakete wurden mit dem Browser heruntergeladen und manuell mit allen Sourcen in unser eigenes jFrog Repository hochgeladen.

Anstatt die Daten aus dem Netz zu laden, laden wir sie von unseren eigenen Servern beim Buildprozess herunter. Und da hier keine HTTP Umleitung erzwungen wird, hat auch CONAN kein Problem damit.

Dazu muss am Ende nur die Paket-Abhängigkeit von z.B.: zlib/1.2.11@conan/stable
auf
zlib/1.2.11@our-server-id/stable
gesetzt werden.

Gefahr erkann, Gefahr gebannt.

Fazit

Nur besonders zufrieden stimmt mich der Sachverhalt nicht.

HTTP Umleitungen werden gerne bei der Programmierung vergessen (ist mir ja auch schon passiert), und dann kommt es zu Abbrüchen, die schwer nachvollziebar werden.

Ich kann daher nur empfehlen, bei der Nutzung von HTTP Bibliotheken immer nach der Konfiguration zu sehen, ob Redirection automatisch behandelt werden oder nicht.

Und die CONAN Entwickler werden dieses Problem hoffentlich bald gelöst haben und einen Patch oder ein neues Release ausrollen.


Wenn sich eine triviale Erkenntnis mit Dummheit in der Interpretation paart, dann gibt es in der Regel Kollateralschäden in der Anwendung.
frei zitiert nach A. Van der Bellen
... also dann paaren wir mal eine komplexe Erkenntnis mit Klugheit in der Interpretation!