Kontrola współbieżności

Uwaga

Interfejsy API portalu partnera w chmurze są zintegrowane z usługą i będą nadal działać w Centrum partnerskim. Przejście wprowadza niewielkie zmiany. Przejrzyj zmiany wymienione w dokumentacji interfejsu API portalu partnerów w chmurze , aby upewnić się, że kod nadal działa po przejściu do Centrum partnerskiego. Interfejsy API CPP powinny być używane tylko dla istniejących produktów, które zostały już zintegrowane przed przejściem do Centrum partnerskiego; nowe produkty powinny używać interfejsów API przesyłania centrum partnerskiego.

Każde wywołanie interfejsów API publikowania w portalu partnerów w chmurze musi jawnie określić, która strategia kontroli współbieżności ma być używana. Nie można podać nagłówka If-Match , co spowoduje odpowiedź o błędzie HTTP 400. Oferujemy dwie strategie kontroli współbieżności.

  • Optymistyczny — klient wykonujący aktualizację sprawdza, czy dane uległy zmianie od czasu ostatniego odczytania danych.
  • Ostatnia wygrana — klient bezpośrednio aktualizuje dane, niezależnie od tego, czy inna aplikacja zmodyfikowała je od czasu ostatniego odczytu.

Optymistyczny przepływ pracy współbieżności

Zalecamy użycie optymistycznej strategii współbieżności z następującym przepływem pracy w celu zagwarantowania, że żadne nieoczekiwane zmiany nie zostaną wprowadzone do zasobów.

  1. Pobieranie jednostki przy użyciu interfejsów API. Odpowiedź zawiera wartość ETag, która identyfikuje obecnie przechowywaną wersję jednostki (w momencie odpowiedzi).
  2. W momencie aktualizacji uwzględnij tę samą wartość ETag w obowiązkowym nagłówku żądania If-Match .
  3. Interfejs API porównuje wartość ETag odebraną w żądaniu z bieżącą wartością ETag jednostki w transakcji niepodzielnej.
    • Jeśli wartości ETag są inne, interfejs API zwraca 412 Precondition Failed odpowiedź HTTP. Ten błąd wskazuje, że inny proces zaktualizował jednostkę od czasu ostatniego pobrania jednostki lub że wartość ETag określona w żądaniu jest niepoprawna.
    • Jeśli wartości ETag są takie same lub nagłówek If-Match zawiera symbol wieloznaczny gwiazdki (*), interfejs API wykonuje żądaną operację. Operacja interfejsu API aktualizuje również przechowywaną wartość ETag jednostki.

Uwaga

Określanie symbolu wieloznacznego (*) w nagłówku If-Match powoduje wyświetlenie interfejsu API przy użyciu strategii współbieżności Last-one-wins. W takim przypadku porównanie elementu ETag nie występuje i zasób jest aktualizowany bez żadnych kontroli.