diff --git a/proto/limiter.thrift b/proto/limiter.thrift index 5a0c500..8ba530b 100644 --- a/proto/limiter.thrift +++ b/proto/limiter.thrift @@ -84,9 +84,9 @@ service Limiter { Clock Hold(1: LimitChange change, 2: Clock clock, 3: LimitContext context) throws ( 1: LimitNotFound e1, - 3: base.InvalidRequest e2 - 4: InvalidOperationCurrency e3 - 5: OperationContextNotSupported e4 + 3: base.InvalidRequest e2, + 4: InvalidOperationCurrency e3, + 5: OperationContextNotSupported e4, 6: PaymentToolNotSupported e5 ) @@ -100,7 +100,20 @@ service Limiter { Clock Rollback(1: LimitChange change, 2: Clock clock, 3: LimitContext context) throws ( 1: LimitNotFound e1, 2: LimitChangeNotFound e2, - 3: base.InvalidRequest e3 + 3: base.InvalidRequest e3, + /* + * Исключения бизнес-логики повторяются для `Rollback` с целью + * согласованности контракта при вызове метода с тем же контекстом что + * и в методе `Hold`. + * То есть клиенту при последовательном обращении к методам удержания и + * отката с одними и теми же контекстом и идентификаторами изменений + * гарантируется что те же самые ошибки бизнес-логики будут явно + * сообщены, а операция отката не будет пытаться найти и изменить + * состояния не удержанного изменения. + */ + 4: InvalidOperationCurrency e4, + 5: OperationContextNotSupported e5, + 6: PaymentToolNotSupported e6 ) }