Etcd - Устаревший индекс. Как читать X-Etcd-Index от клиента

Я использую github.com/coreos/etcd/client для связи с облаком etcd, иногда я получаю ошибку 401 «Событие в запрошенном индексе устарело и очищено», на странице сервера есть объяснение, почему это произошло и как это можно сделать. решить. Собственно я хочу реализовать следующий сценарий.

  1. Получить «ключ» и его модифицированный индекс
  2. поработай
  3. начать просмотр по «ключу» из модифицированного индекса

Таким образом, я могу быть уверен, что все изменения во время 2-го шага также будут приняты. Но Etcd сохраняет только первые N изменений, и иногда я получаю ошибку 401. Записав документ, я могу использовать "X-Etcd-Index" + 1 заголовок из запроса Get key как измененный индекс для просмотра.

curl 'http://127.0.0.1:2379/v2/keys/foo' -vv
< HTTP/1.1 200 OK
< Content-Type: application/json
< X-Etcd-Cluster-Id: f63cd37d2ff4f650
< X-Etcd-Index: 17245
< X-Raft-Index: 2107637
< X-Raft-Term: 360
< Date: Tue, 15 Dec 2015 09:02:20 GMT
< Content-Length: 791
< ...

Но я не использую прямые http-вызовы, только github.com/coreos/etcd/client. Как я могу получить (и действительно ли это возможно с помощью api) информацию заголовка http из запроса на получение ключа?


person Oleg    schedule 15.12.2015    source источник


Ответы (2)


Заголовок X-Etcd-Index соответствует полю Response.Index.

person JimB    schedule 15.12.2015

Индекс доступен в поле ответа как объект «Индекс». См. Документацию здесь: https://godoc.org/github.com/coreos/etcd/client#Response

person Brandon Philips    schedule 16.12.2015