7.6 KiB
7.6 KiB
v3.4.0 (TBD 2018-05-01)
See code changes and v3.4 upgrade guide for any breaking changes.
Improved
- Add jitter to watch progress notify to prevent spikes in
etcd_network_client_grpc_sent_bytes_total
. - Add warnings on requests taking too long.
- e.g.
etcdserver: read-only range request "key:\"\\000\" range_end:\"\\000\" " took too long [3.389041388s] to execute
- e.g.
- Improve long-running concurrent read transactions under light write workloads.
- Previously, periodic commit on pending writes blocks incoming read transactions, even if there is no pending write.
- Now, periodic commit operation does not block concurrent read transactions, thus improves long-running read transaction performance.
Changed(Breaking Changes)
- Drop ACIs from official release.
- AppC was officially suspended, as of late 2016.
acbuild
is not maintained anymore.*.aci
files are not available fromv3.4
release.
- Exit on empty hosts in advertise URLs.
- Address advertise client URLs accepts empty hosts.
- e.g. exit with error on
--advertise-client-urls=http://:2379
. - e.g. exit with error on
--initial-advertise-peer-urls=http://:2380
.
- Exit on shadowed environment variables.
- Address error on shadowed environment variables.
- e.g. exit with error on
ETCD_INITIAL_CLUSTER_TOKEN=abc etcd --initial-cluster-token=def
.
- Migrate dependency management tool from
glide
togolang/dep
.- <= 3.3 puts
vendor
directory undercmd/vendor
directory to prevent conflicting transitive dependencies. - 3.4 moves
cmd/vendor
directory tovendor
at repository root. - Remove recursive symlinks in
cmd
directory. - Now
go get/install/build
onetcd
packages (e.g.clientv3
,tools/benchmark
) enforce builds with etcdvendor
directory.
- <= 3.3 puts
- Reorganize internal packages.
internal/*
packages cannot be(are not meant to be) imported by external projects.- Move
"github.com/coreos/etcd/alarm"
to"github.com/coreos/etcd/internal/alarm"
. - Move
"github.com/coreos/etcd/auth"
to"github.com/coreos/etcd/internal/auth"
. - Move
"github.com/coreos/etcd/compactor"
to"github.com/coreos/etcd/internal/compactor"
.embed.CompactorModePeriodic
to replacecompactor.ModePeriodic
.embed.CompactorModeRevision
to replacecompactor.ModeRevision
.
- Move
"github.com/coreos/etcd/discovery"
to"github.com/coreos/etcd/internal/discovery"
. - Move
"github.com/coreos/etcd/lease"
to"github.com/coreos/etcd/internal/lease"
. - Move
"github.com/coreos/etcd/mvcc"
to"github.com/coreos/etcd/internal/mvcc"
. - Move
"github.com/coreos/etcd/snap"
to"github.com/coreos/etcd/internal/raftsnap"
. - Move
"github.com/coreos/etcd/store"
to"github.com/coreos/etcd/internal/store"
. - Move
"github.com/coreos/etcd/version"
to"github.com/coreos/etcd/internal/version"
.
- Move
- Move
"github.com/coreos/etcd/etcdserver/auth"
to"github.com/coreos/etcd/etcdserver/v2auth"
. - Change v3
etcdctl snapshot
exit codes withsnapshot
package.- Exit on error with exit code 1 (no more exit code 5 or 6 on
snapshot save/restore
commands).
- Exit on error with exit code 1 (no more exit code 5 or 6 on
- Require Go 1.10+.
Added(etcd
)
- Add
--discovery-srv-name
flag to support custom DNS SRV name with discovery.- If not given, etcd queries
_etcd-server-ssl._tcp.[YOUR_HOST]
and_etcd-server._tcp.[YOUR_HOST]
. - If
--discovery-srv-name="foo"
, then query_etcd-server-ssl-foo._tcp.[YOUR_HOST]
and_etcd-server-foo._tcp.[YOUR_HOST]
. - Useful for operating multiple etcd clusters under the same domain.
- If not given, etcd queries
Added(API)
- Add
snapshot
package for snapshot restore/save operations. - Add
watch_id
field toetcdserverpb.WatchCreateRequest
, allow user-provided watch ID tomvcc
.- Corresponding
watch_id
is returned viaetcdserverpb.WatchResponse
, if any.
- Corresponding
- Add
raftAppliedIndex
field toetcdserverpb.StatusResponse
for current Raft applied index. - Add
errors
field toetcdserverpb.StatusResponse
for server-side error.- e.g.
"etcdserver: no leader", "NOSPACE", "CORRUPT"
- e.g.
- Add
dbSizeInUse
field toetcdserverpb.StatusResponse
for actual DB size after compaction.
Added(v3 etcdctl
)
- Add
check datascale
command. - Add "raft applied index" field to
endpoint status
. - Add "errors" field to
endpoint status
.
Added(metrics)
- Add
etcd_debugging_mvcc_db_total_size_in_use_in_bytes
Prometheus metric.
Added(gRPC gateway)
- Replace gRPC gateway endpoint with
/v3
.- To deprecate [
/v3beta
] inv3.5
.
- To deprecate [
Package raft
- Fix deadlock during PreVote migration process.
- Add
raft.ErrProposalDropped
.- Now
(r *raft) Step
returnsraft.ErrProposalDropped
if a proposal has been ignored. - e.g. a node is removed from cluster, ongoing leadership transfer, etc.
- Now
- Improve Raft
becomeLeader
andstepLeader
by keeping track of latestpb.EntryConfChange
index.- Previously record
pendingConf
boolean field scanning the entire tail of the log, which can delay hearbeat send.
- Previously record
- Fix missing learner nodes on
(n *node) ApplyConfChange
.
Fixed(v3)
- Fix
mvcc
"unsynced" watcher restore operation.- "unsynced" watcher is watcher that needs to be in sync with events that have happened.
- That is, "unsynced" watcher is the slow watcher that was requested on old revision.
- "unsynced" watcher restore operation was not correctly populating its underlying watcher group.
- Which possibly causes missing events from "unsynced" watchers.