Wissensbasis/Sekundärmarkt/Kanalexklusivität: ein Gerät ist auf Market, in Auktion oder direkt verkauft — nie zweimal gleichzeitig
10Sekundärmarkt3 Min. Lesezeit

Kanalexklusivität: ein Gerät ist auf Market, in Auktion oder direkt verkauft — nie zweimal gleichzeitig

Die atomare Sperre, die doppeltes Veröffentlichen verhindert, und warum sie am Gerät hängt und nicht am Batch.

Könnte dasselbe Gerät gleichzeitig auf Market veröffentlicht und in einer Auktion gelistet sein, würde die Plattform zwei verschiedenen Käufergruppen etwas über die Verfügbarkeit vorlügen. Der Käufer, der die Auktion gewinnt, erwartet das Lot. Der Käufer, der auf Market „Sofort kaufen“ drückt, erwartet dasselbe. Einer von beiden wird enttäuscht, und danach kommen die Streitfälle.

Die Sperre

Die Sperre sitzt an jedem verkaufsfähigen Gerät, nicht am Batch. Jede Zeile im gemeinsamen Sellable-Pool trägt einen aktuellen Kanal — keiner, Market, Auction oder Direktverkauf für Bestand, der aus Core einem Direktverkauf zugesagt ist — dazu einen Verweis auf die Veröffentlichung, die ihn hält, und eine Check-Constraint, die einen Kanal ohne Veröffentlichung ablehnt. Die Market-Veröffentlichung, die Auction-Veröffentlichung und der Direktverkauf tun alle dasselbe: ein Update, das den Kanal nur dort setzt, wo er gerade keiner ist. Ist die Zeile bereits belegt, fasst das Update nichts an, die Veröffentlichung scheitert und die Transaktion wird zurückgerollt. Die Kanalhistorie an der Zeile hält jeden Wechsel fest.

Warum atomar

Ohne Atomarität könnten zwei gleichzeitige „Veröffentlichen“-Anfragen den Kanal beide als leer lesen und beide ihren eigenen schreiben. Das bedingte Update garantiert, dass genau eine gewinnt; kollidieren zwei Transaktionen wirklich, verliert eine mit einem Serialisierungsfehler und ihre Veröffentlichung wird zurückgerollt. Atomar auf Datenbankebene, nicht auf Anwendungsebene — denn die Anwendung kann über zwei Serverprozesse gegen sich selbst rennen, und der einzig sichere Punkt der Wahrheit ist die Datenbankzeile.

Ein Batch wechselt nie den Kanal

Auch die Vorbereitung kennt ihren Kanal. Ein Market-Batch ist eine Market-Vorbereitung und kann nur auf Market veröffentlichen; ein Auktions-Lot-Entwurf ist eine eigene Vorbereitung mit eigenem Zielkanal und kann nur in Auction veröffentlichen. Solange ein Gerät in einem der beiden Entwürfe liegt, ist es für diesen Kanal reserviert und verschwindet aus der normalen Auswahl des anderen — „alle anzeigen“ macht es als blockierte Zeile sichtbar, mit Link auf den Datensatz, der das erklärt. Dieselben Geräte lieber unter den Hammer? Starten Sie einen Lot-Entwurf im Auction-Bestand; die Plattform biegt einen Batch nicht still um. Die Verfügbarkeit ist eine dritte, separate Sperre: Ein Gerät auf Hold (nicht verfügbar) oder als vernichtet erfasst lässt sich auf gar keinen Kanal setzen, und die Wizards bieten es nicht an.

Kanalwechsel

Nacheinander wechseln ist erlaubt. Ziehen Sie das Market-Listing zurück oder lassen Sie eine Auktion ohne Gewinner enden, und der Kanal ist wieder leer; die nächste Veröffentlichung auf dem anderen Kanal läuft normal durch. Die Wiedereinstellung nach einer erfolglosen Auktion nutzt genau diesen Weg: Wird ein Lot als „Reserve nicht erreicht“ oder „keine Gebote“ abgerechnet, setzt die Abrechnung die Geräte auf keinen Kanal zurück und veröffentlicht im selben Lauf ein Market-Listing, benannt nach dem Batch mit dem Zusatz „— relisted from auction“. Die Wiedereinstellung merkt sich, aus welchem Lot sie kam, sodass eine zweimal laufende Abrechnung ein Listing erzeugt, nicht zwei.