diff --git a/content/docs/api-service/operator-cli.mdx b/content/docs/api-service/operator-cli.mdx index e3fefac..665315f 100644 --- a/content/docs/api-service/operator-cli.mdx +++ b/content/docs/api-service/operator-cli.mdx @@ -110,7 +110,7 @@ service accepts the token, and which versions the service already has. | `--region` | — | Region. | | `--prefix` | — | Key prefix. | | `--force-path-style` | false | Path-style addressing (MinIO, RustFS). | -| `--addr` | `localhost:23410` | Service gRPC address. | +| `--addr` | `localhost:23410` | Service gRPC address; `host:port` is resolved by the system resolver, `dns:///…` by grpc-go's. | | `--token` | `$EASYP_TOKEN` | Write token. | | `--tls-ca` | system store | CA that signed the server certificate. | | `--tls-cert`, `--tls-key` | — | Client certificate and key, for mutual TLS. | diff --git a/content/docs/api-service/operator-cli.ru.mdx b/content/docs/api-service/operator-cli.ru.mdx index f2a802c..60772cc 100644 --- a/content/docs/api-service/operator-cli.ru.mdx +++ b/content/docs/api-service/operator-cli.ru.mdx @@ -110,7 +110,7 @@ Docker. Каждая версия из `plugin.yaml` собирается с `-- | `--region` | — | Регион. | | `--prefix` | — | Префикс ключей. | | `--force-path-style` | false | Path-style адресация (MinIO, RustFS). | -| `--addr` | `localhost:23410` | gRPC-адрес сервиса. | +| `--addr` | `localhost:23410` | gRPC-адрес сервиса; `host:port` разрешает системный резолвер, `dns:///…` — резолвер grpc-go. | | `--token` | `$EASYP_TOKEN` | Токен записи. | | `--tls-ca` | системное хранилище | CA, подписавший сертификат сервера. | | `--tls-cert`, `--tls-key` | — | Клиентский сертификат и ключ для взаимного TLS. | diff --git a/content/docs/api-service/quickstart.mdx b/content/docs/api-service/quickstart.mdx index 20a4b3b..128513b 100644 --- a/content/docs/api-service/quickstart.mdx +++ b/content/docs/api-service/quickstart.mdx @@ -63,7 +63,7 @@ services: retries: 30 service: - image: ghcr.io/easyp-tech/service:v1.2.0 + image: ghcr.io/easyp-tech/service:v1.2.1 command: ["service", "start"] depends_on: postgres: diff --git a/content/docs/api-service/quickstart.ru.mdx b/content/docs/api-service/quickstart.ru.mdx index 1a512a8..3a5d2e9 100644 --- a/content/docs/api-service/quickstart.ru.mdx +++ b/content/docs/api-service/quickstart.ru.mdx @@ -63,7 +63,7 @@ services: retries: 30 service: - image: ghcr.io/easyp-tech/service:v1.2.0 + image: ghcr.io/easyp-tech/service:v1.2.1 command: ["service", "start"] depends_on: postgres: diff --git a/content/docs/api-service/upgrading.mdx b/content/docs/api-service/upgrading.mdx index ca58edc..d8266da 100644 --- a/content/docs/api-service/upgrading.mdx +++ b/content/docs/api-service/upgrading.mdx @@ -34,6 +34,43 @@ A rename is handled without breaking anyone: the old configuration key keeps working for one release while warning, naming both spellings and the line to change, and only then stops. +## v1.2.0 → v1.2.1 + +### Unpacked copies without a checksum marker are fetched once + +A version directory with no `.sha256` marker beside it — unpacked before +v1.2.0, or bind-mounted from a `plugins build` tree — used to count as current. +It is now fetched again the first time it is used, once per replica, and gets a +marker. Plan for the disk: each replica downloads every version it serves once +more, within `registry.cache_max_bytes`. Versions registered without a checksum +(`plugins publish --plugins-dir`) are unaffected. + +### A relative `plugins_dir` is resolved at start + +`plugins_dir: ./plugins` now resolves to an absolute path before commands are +derived. Versions registered with a relative command under v1.2.0 still fail +with `no such file or directory`; repair them with +`easyp-svc plugins publish --plugins-dir --force`. + +### The plugin limit holds under concurrent registrations + +The licence plugin limit is now counted and enforced in the same transaction as +the insert. Before, parallel `CreatePlugin` calls could pass the check together +and land more versions than the limit allows; such extra rows stay, but no new +version is accepted until the count is below the limit. + +### Clients resolve plain addresses with the system resolver + +The SDK, `easyp-svc` and `easyp generate` dial a plain `host:port` through +`passthrough:///`, so the operating system resolves the name when connecting. A +host without a port gets 443, as before. Prefix `dns:///` to use grpc-go's own +resolver. + +### The rate limit says how long to wait + +A refused request reads `rate limit exceeded for , retry after s`. The +`x-ratelimit-reset` trailer still carries the unix time the bucket refills by. + ## v1.1.x → v1.2.0 ### `plugins publish` replaces `push`, `register` and `pack` @@ -74,7 +111,8 @@ republish, not to retry. A client matching on reasons gains one; one matching on `plugins publish --force` replaces a version's config with the new checksum, and each replica refetches its unpacked copy on next use — it keeps a `.sha256` marker beside it. Copies unpacked by an older service have no marker and count -as current; republish a version once to bring its copies in line. +as current; republish a version once to bring its copies in line. From v1.2.1 a +copy without a marker is fetched once on its own. ## v1.0.0 → v1.0.2 diff --git a/content/docs/api-service/upgrading.ru.mdx b/content/docs/api-service/upgrading.ru.mdx index 99721c5..0971d6a 100644 --- a/content/docs/api-service/upgrading.ru.mdx +++ b/content/docs/api-service/upgrading.ru.mdx @@ -34,6 +34,44 @@ description: "Заметки по обновлению API Service от рели работать один релиз, предупреждая и называя оба написания и строку, которую надо поправить, и только после этого перестаёт. +## v1.2.0 → v1.2.1 + +### Копии без маркера контрольной суммы перекачиваются один раз + +Каталог версии без маркера `.sha256` — распакованный до v1.2.0 или +смонтированный из дерева `plugins build` — раньше считался актуальным. Теперь +при первом использовании он скачивается заново, по разу на реплику, и получает +маркер. Учтите диск: каждая реплика ещё раз скачает каждую версию, которую +обслуживает, в пределах `registry.cache_max_bytes`. Версии, зарегистрированные +без контрольной суммы (`plugins publish --plugins-dir`), это не затрагивает. + +### Относительный `plugins_dir` разрешается при старте + +`plugins_dir: ./plugins` теперь приводится к абсолютному пути до вывода команды. +Версии, зарегистрированные в v1.2.0 с относительной командой, по-прежнему падают +с `no such file or directory`; почините их через +`easyp-svc plugins publish --plugins-dir --force`. + +### Лимит плагинов выдерживает параллельные регистрации + +Лимит плагинов лицензии теперь считается и проверяется в одной транзакции со +вставкой. Раньше параллельные `CreatePlugin` могли пройти проверку вместе и +записать больше версий, чем позволяет лимит; такие лишние строки остаются, но +новые версии не принимаются, пока их число не опустится ниже лимита. + +### Клиенты разрешают обычные адреса системным резолвером + +SDK, `easyp-svc` и `easyp generate` подключаются к обычному `host:port` через +`passthrough:///`, и имя разрешает операционная система в момент соединения. +Хост без порта, как и раньше, получает 443. Чтобы использовать собственный +резолвер grpc-go, укажите префикс `dns:///`. + +### Rate limit говорит, сколько ждать + +Отклонённый запрос получает `rate limit exceeded for , retry after s`. +Трейлер `x-ratelimit-reset` по-прежнему содержит unix-время, к которому корзина +наполнится. + ## v1.1.x → v1.2.0 ### `plugins publish` вместо `push`, `register` и `pack` @@ -75,7 +113,7 @@ description: "Заметки по обновлению API Service от рели и каждая реплика перекачивает свою распакованную копию при следующем использовании — рядом с ней лежит маркер `.sha256`. Копии, распакованные старым сервисом, маркера не имеют и считаются актуальными; перепубликуйте версию один -раз, чтобы выровнять их. +раз, чтобы выровнять их. С v1.2.1 копия без маркера перекачивается один раз сама. ## v1.0.0 → v1.0.2