30801de | Yicheng Qin | 03 September 2015, 20:33:27 UTC | *: bump to v2.1.3 | 03 September 2015, 20:33:27 UTC |
dbac8c8 | Yicheng Qin | 26 August 2015, 04:59:56 UTC | etcdmain: check error before assigning peer transport Or it may panic when new transport fails, e.g., TLS info is invalid. | 03 September 2015, 20:22:19 UTC |
151c18d | Yicheng Qin | 21 August 2015, 23:20:16 UTC | *: bump to v2.1.2+git | 21 August 2015, 23:20:16 UTC |
ff8d1ec | Yicheng Qin | 21 August 2015, 23:19:55 UTC | *: bump to v2.1.2 | 21 August 2015, 23:19:55 UTC |
ccb67a6 | Yicheng Qin | 21 August 2015, 19:09:17 UTC | pkg/netutil: stop resolving in place It helps to copy out a and b, and not modify the original a and b. | 21 August 2015, 22:39:57 UTC |
0592337 | Yicheng Qin | 21 August 2015, 19:01:00 UTC | pkg/netutil: not introduce empty url when converting It should not make slices with length and append elements at the same time. | 21 August 2015, 22:39:48 UTC |
c530acf | Yicheng Qin | 21 August 2015, 18:58:37 UTC | pkg/netutil: not export resolve and urlsEqual functions They are only used in this package, so there is no need to public them. | 21 August 2015, 22:39:38 UTC |
bad1b20 | Yicheng Qin | 21 August 2015, 17:15:08 UTC | pkg/netutil: fix false negative comparison Sort the resolved URLs before DeepEqual, so it will not compare URLs that may be out of order due to resolution. | 21 August 2015, 22:39:29 UTC |
89640cf | Yicheng Qin | 21 August 2015, 16:51:07 UTC | etcdserver: remove TODO to delete URLStringsEqual Discovery SRV supports to compare IP addresses with domain names, so we need URLStringsEqual function. | 21 August 2015, 22:39:19 UTC |
bbefb0a | Yicheng Qin | 21 August 2015, 16:41:13 UTC | Revert "Revert "Treat URLs have same IP address as same"" This reverts commit 3153e635d5799f1ff8715fd4b7c07e0283820acd. Conflicts: etcdserver/config.go | 21 August 2015, 22:39:10 UTC |
8e07065 | Xiang Li | 20 August 2015, 21:48:53 UTC | etcdmain: print out version information on startup Conflicts: etcdmain/etcd.go | 21 August 2015, 22:38:34 UTC |
cd2a218 | Yicheng Qin | 21 August 2015, 22:27:35 UTC | etcdctl/cluster_health: set health var when checked healthy This was a typo. | 21 August 2015, 22:37:26 UTC |
8d410bd | Xiang Li | 18 August 2015, 22:04:41 UTC | etcdctl: use health endpoint to greatly simplify health checking | 21 August 2015, 22:22:19 UTC |
0a2d2b8 | Xiang Li | 30 July 2015, 02:01:47 UTC | etcdctl: cluster-health supports forever flag cluster-health command supports checking the cluster health forever. | 21 August 2015, 22:22:13 UTC |
6c9e876 | Yicheng Qin | 23 July 2015, 23:49:31 UTC | etcdctl: refactor the way to check cluster health This method uses raft status exposed at /debug/varz to determine the health of the cluster. It uses whether commit index increases to determine the cluster health, and uses whether match index increases to determine the member health. This could fix the bug #2711 that fails to detect follower is unhealthy because it doesn't rely on whether message in long-polling connection is sent. This health check is stricter than the old one, and reflects the situation that whether followers are healthy in the view of the leader. One example is that if the follower is receiving the snapshot, it will turns out to be unhealthy because it doesn't move forward. `etcdctl cluster-health` will reflect the healthy view in the raft level, while connectivity checks reflects the healthy view in transport level. | 21 August 2015, 22:22:05 UTC |
a845f82 | Xiang Li | 06 June 2015, 02:46:55 UTC | etcdctl: health use etcd/client Conflicts: etcdctl/command/cluster_health.go | 21 August 2015, 22:21:44 UTC |
c1c2362 | Xiang Li | 18 August 2015, 22:43:49 UTC | raft: downgrade the logging around snapshot to debugf Snapshot related logging is spamming when leader trying to sync a failed peer. Conflicts: raft/raft.go | 21 August 2015, 22:11:47 UTC |
ac67aa9 | Xiang Li | 17 August 2015, 22:51:29 UTC | etcdhttp:write etcderror for all errors in keyhandler | 21 August 2015, 22:10:01 UTC |
52c5203 | Xiang Li | 17 August 2015, 20:30:39 UTC | *: key handler should write auth error as etcd error | 21 August 2015, 22:09:53 UTC |
27bfb3f | Yicheng Qin | 13 August 2015, 22:46:21 UTC | etcdserver: improve error message when timeout due to leader fail | 21 August 2015, 22:09:46 UTC |
084936a | Yicheng Qin | 12 August 2015, 20:38:43 UTC | etcdserver: specify timeout caused by leader election Before this PR, the timeout caused by leader election returns: ``` 14:45:37 etcd2 | 2015-08-12 14:45:37.786349 E | etcdhttp: got unexpected response error (etcdserver: request timed out) ``` After this PR: ``` 15:52:54 etcd1 | 2015-08-12 15:52:54.389523 E | etcdhttp: etcdserver: request timed out, possibly due to leader down ``` Conflicts: etcdserver/raft.go | 21 August 2015, 22:09:32 UTC |
d2ecd9c | Brandon Philips | 09 August 2015, 00:45:13 UTC | test: race detector doesn't work on armv7l Test fails without this fix on armv7l: go test: -race is only supported on linux/amd64, freebsd/amd64, darwin/amd64 and windows/amd64 | 21 August 2015, 21:59:07 UTC |
07b8283 | Brandon Philips | 09 August 2015, 00:40:12 UTC | etcdserver: move atomics to make etcd work on arm64 Follow the simple rule in the atomic package: "On both ARM and x86-32, it is the caller's responsibility to arrange for 64-bit alignment of 64-bit words accessed atomically. The first word in a global variable or in an allocated struct or slice can be relied upon to be 64-bit aligned." Tested on a system with /proc/cpuinfo reporting: processor : 0 model name : ARMv7 Processor rev 1 (v7l) Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x0 CPU part : 0xc0d CPU revision : 1 | 21 August 2015, 21:58:59 UTC |
61f4e74 | Yicheng Qin | 23 July 2015, 21:48:11 UTC | etcdmain: reject unreasonably high values of -election-timeout This helps users to detect setting problem early. | 21 August 2015, 21:58:49 UTC |
331ecdf | Yicheng Qin | 05 August 2015, 05:21:54 UTC | client: return correct error for 50x response etcd always returns 500/503 response when it may have no leader. So we should log the other 50x response in a normal way. This helps to log correctly when discovery meets 504 error. Before this PR, it logs like this: ``` 18:31:58 etcd2 | 2015/08/4 18:31:58 discovery: error #0: client: etcd member https://discovery.etcd.io has no leader 18:31:58 etcd2 | 2015/08/4 18:31:58 discovery: waiting for other nodes: error connecting to https://discovery.etcd.io, retrying in 4s ``` After this PR: ``` 22:20:25 etcd2 | 2015/08/4 22:20:25 discovery: error #0: client: etcd member https://discovery.etcd.io returns server error [Gateway Timeout] 22:20:25 etcd2 | 2015/08/4 22:20:25 discovery: waiting for other nodes: error connecting to https://discovery.etcd.io, retrying in 4s ``` Conflicts: client/client.go | 21 August 2015, 21:55:35 UTC |
3a346ea | Xiang Li | 29 July 2015, 15:04:12 UTC | discovery: print out detailed cluster error Conflicts: discovery/discovery.go | 21 August 2015, 21:54:36 UTC |
9760504 | Xiang Li | 20 July 2015, 00:24:42 UTC | client: return cluster error if the etcd cluster is not avaliable Add a new ClusterError type. It contians all encountered errors and return ClusterNotAvailable as the error string. Conflicts: client/client.go discovery/discovery.go | 21 August 2015, 21:51:41 UTC |
41ecf7f | Guohua Ouyang | 22 July 2015, 01:01:19 UTC | etcdmain: Don't print flags when flag parse error At present it prints the whole usage and flags, which cause the exact error message is hidden two screens above. Fixes #3141 Signed-off-by: Guohua Ouyang <gouyang@redhat.com> | 21 August 2015, 21:32:49 UTC |
fcd564e | Xiang Li | 19 July 2015, 01:53:57 UTC | etcdmian: fix initialization confilct Fix #3142 Ignore flags if etcd is already initialized. | 21 August 2015, 21:32:41 UTC |
0876c5e | Yicheng Qin | 15 July 2015, 23:44:00 UTC | etcdmain: warn when listening on HTTP if TLS is set If the user sets TLS info, this implies that he wants to listen on TLS. If etcd finds that urls to listen is still HTTP schema, it prints out warning to notify user about possible wrong setting. | 21 August 2015, 21:32:31 UTC |
ef80bb5 | Yicheng Qin | 14 July 2015, 19:18:15 UTC | pkg/transport: fix HTTPS downgrade bug for keepalive listener If TLS config is empty, etcd downgrades keepalive listener from HTTPS to HTTP without warning. This results in HTTPS downgrade bug for client urls. The commit returns error if it cannot listen on TLS. | 21 August 2015, 21:32:18 UTC |
147b14c | Yicheng Qin | 21 July 2015, 17:43:49 UTC | *: bump to v2.1.1+git | 21 July 2015, 17:43:49 UTC |
6335fdc | Yicheng Qin | 21 July 2015, 17:41:26 UTC | *: bump to v2.1.1 | 21 July 2015, 17:41:26 UTC |
ca540b2 | Yicheng Qin | 21 July 2015, 17:24:11 UTC | Merge pull request #3158 from yichengq/exp-auth docs: add experimental notice on auth doc | 21 July 2015, 17:24:11 UTC |
097ec0f | Yicheng Qin | 20 July 2015, 22:24:40 UTC | docs: add experimental notice on auth doc Reasons for the notice: 1. No users have reported about their feedback about auth feature so far. 2. We haven't used it internally. 3. This is the first release that includes auth feature, so it is good to be more cautious. | 21 July 2015, 17:23:23 UTC |
ed44441 | Xiang Li | 21 July 2015, 00:53:08 UTC | Merge pull request #3160 from ryandoyle/docs-nss-etcd docs: glibc NSS module for resolving names in etcd | 21 July 2015, 00:53:08 UTC |
d373645 | Ryan Doyle | 21 July 2015, 00:33:23 UTC | docs: glibc NSS module for resolving names in etcd | 21 July 2015, 00:33:23 UTC |
d86e94b | Yicheng Qin | 20 July 2015, 21:54:26 UTC | Merge pull request #3128 from yichengq/doc-watch-api docs: update watch API doc for clarity | 20 July 2015, 21:54:26 UTC |
d52cb2e | Yicheng Qin | 14 July 2015, 07:33:28 UTC | docs: add watch command and correct the example | 20 July 2015, 21:49:01 UTC |
40681bd | Xiang Li | 16 July 2015, 22:03:33 UTC | Merge pull request #3146 from a-robinson/snap snap: Record the snapshot save duration on success rather than only on error | 16 July 2015, 22:03:33 UTC |
7d38115 | Yicheng Qin | 16 July 2015, 22:01:54 UTC | Merge pull request #3148 from yichengq/update-contact Update contact section in README.md | 16 July 2015, 22:01:54 UTC |
f8baa4e | Barak Michener | 16 July 2015, 20:41:15 UTC | Merge pull request #3138 from barakmich/auth_doc documentation: Add authentication walkthrough with etcdctl. Fixes #2949 | 16 July 2015, 20:41:15 UTC |
9b962c8 | Yicheng Qin | 16 July 2015, 19:54:46 UTC | README: let roadmap point to ROADMAP.md | 16 July 2015, 19:58:13 UTC |
c1aed32 | Yicheng Qin | 16 July 2015, 19:52:26 UTC | README: update irc channel to #etcd | 16 July 2015, 19:52:26 UTC |
57a5520 | Alex Robinson | 16 July 2015, 16:52:10 UTC | snap: Record the snapshot save duration on success rather than only on error. It makes more sense to record the latency of successes (or all attempts) than of only a particular failure case. | 16 July 2015, 17:46:47 UTC |
452a327 | Barak Michener | 15 July 2015, 18:35:46 UTC | documentation: Add authentication walkthrough with etcdctl. Fixes #2949 | 15 July 2015, 19:54:26 UTC |
ebbb0ca | Yicheng Qin | 15 July 2015, 18:30:07 UTC | Merge pull request #3136 from yichengq/fix-proxy-doc docs: fix wrong proxy command | 15 July 2015, 18:30:07 UTC |
d0e976a | Yicheng Qin | 15 July 2015, 15:37:10 UTC | docs: fix wrong proxy command | 15 July 2015, 15:37:10 UTC |
d0e3e2c | Xiang Li | 14 July 2015, 23:50:36 UTC | Merge pull request #3131 from yichengq/remove-header-timeout discovery: remove ResponseHeaderTimeout when discovery | 14 July 2015, 23:50:36 UTC |
1db1761 | Yicheng Qin | 14 July 2015, 23:19:11 UTC | discovery: remove ResponseHeaderTimeout when discovery The discovery service doesn't return HTTP header early when watch starts. This may trigger ResponseHeaderTimeout and cause the watch request failed. The fix on discovery service may take some time. Remove the ResponseHeaderTimeout first so it behaves as before. | 14 July 2015, 23:33:28 UTC |
f52db1c | Michael Schurter | 10 June 2015, 17:48:14 UTC | docs: add back original example w/index=prevIndex | 14 July 2015, 06:04:39 UTC |
b94f659 | Michael Schurter | 30 April 2015, 18:23:55 UTC | docs: rewrite existing docs instead of adding a new section @xiang90 pointed out my earlier commit duplicated a lot of things that were mentioned earlier in the doc. This time around I tried just making some gotchas more explicit in the existing docs instead of just tacking new stuff onto the end. | 14 July 2015, 06:03:59 UTC |
953a59d | Xiang Li | 14 July 2015, 05:46:08 UTC | Merge pull request #3127 from yanana/emend-error-message etcdmain: emend configuration error message | 14 July 2015, 05:46:08 UTC |
d7276d6 | Shun Yanaura | 14 July 2015, 05:28:23 UTC | etcdmain: emend configuration error message etcd shows an odd message on configuration error like this (partially): ``` ... discovery or bootstrap flags are setChoose one of ... ^^^^^^^^^ ``` This commit fixes the message format problem. | 14 July 2015, 05:42:49 UTC |
d80f4c8 | Yicheng Qin | 13 July 2015, 23:52:11 UTC | Merge pull request #3125 from yichengq/doc-tuning docs: update tuning.md to match today's situation | 13 July 2015, 23:52:11 UTC |
8b7c600 | Yicheng Qin | 13 July 2015, 23:35:30 UTC | docs: update tuning.md to match today's situation 1. etcd requires that election-timeout >= 5 * heartbeat-interval 2. etcd doesn't have flag -snapshot | 13 July 2015, 23:35:30 UTC |
7a520bb | Yicheng Qin | 13 July 2015, 22:23:36 UTC | Merge pull request #3121 from yichengq/extend-schedule pkg/testutil: extend wait schedule time to 10ms | 13 July 2015, 22:23:36 UTC |
1624235 | Yicheng Qin | 12 July 2015, 04:40:04 UTC | pkg/testutil: extend wait schedule time to 10ms Waiting 3ms is not long enough for schedule to work well. The test suite may fail once per 200 times in travis due to this. Extend this to 10ms to ensure schedule could work. Now it could run 1000 times successfully in travis. | 13 July 2015, 16:05:40 UTC |
5be545b | Yicheng Qin | 10 July 2015, 21:44:52 UTC | Merge pull request #3077 from yichengq/fix-test-sync etcdserver: init raft internal var early | 10 July 2015, 21:44:52 UTC |
c7a9493 | Xiang Li | 10 July 2015, 20:12:45 UTC | Merge pull request #3113 from xiang90/fix_proxy_bt etcdmain: proxy ignores discovery if it is initialized | 10 July 2015, 20:12:45 UTC |
dedabdd | Xiang Li | 10 July 2015, 19:52:24 UTC | etcdmain: proxy ignores discovery if it is initialized | 10 July 2015, 19:52:24 UTC |
61e9b99 | Xiang Li | 09 July 2015, 17:33:19 UTC | Merge pull request #2417 from kelseyhightower/improve-etcdctl-ls-command-help etcdctl: update the ls subcommand help to match behavior | 09 July 2015, 17:33:19 UTC |
4631b72 | Xiang Li | 09 July 2015, 17:27:05 UTC | Merge pull request #3105 from xiang90/rd doc: add rolling upgrade doc for 2.1 | 09 July 2015, 17:27:05 UTC |
1145258 | Xiang Li | 07 July 2015, 17:38:58 UTC | doc: add rolling upgrade doc for 2.1 | 07 July 2015, 20:20:41 UTC |
8ab388f | Xiang Li | 07 July 2015, 15:12:06 UTC | Merge pull request #3001 from mwitkow-io/feature/rich_metrics Etcd Rich Metrics | 07 July 2015, 15:12:06 UTC |
7bca757 | Michal Witkowski | 17 June 2015, 13:32:13 UTC | *: add metrics to `store` and `proxy`. | 07 July 2015, 15:01:51 UTC |
573f62f | Yicheng Qin | 07 July 2015, 01:10:31 UTC | Merge pull request #3101 from yichengq/check-err integration: always check error for function calls | 07 July 2015, 01:10:31 UTC |
e7ed7a7 | Yicheng Qin | 06 July 2015, 23:21:56 UTC | integration: always check error for function calls | 07 July 2015, 00:44:36 UTC |
121ff46 | Brandon Philips | 04 July 2015, 22:30:42 UTC | Merge pull request #3097 from philips/tls-churn-faq Documentation/security: add FAQ about peer TLS and etcd 2.0.x | 04 July 2015, 22:30:42 UTC |
83fe818 | Brandon Philips | 04 July 2015, 22:27:09 UTC | Documentation/security: add FAQ about peer TLS and etcd 2.0.x etcd 2.0.x TLS can appear not to work on smaller machines with less horse-power or lots of other work going on. Document the timeout workaround. | 04 July 2015, 22:28:47 UTC |
cbe00e4 | Xiang Li | 03 July 2015, 18:51:15 UTC | Merge pull request #2967 from webner/feature/proxy-config proxy: added endpoint refresh and timeout configuration values | 03 July 2015, 18:51:15 UTC |
954e416 | Wolfgang Ebner | 03 July 2015, 12:11:40 UTC | proxy: fixed director.go formatting | 03 July 2015, 12:11:40 UTC |
883bb47 | Xiang Li | 30 June 2015, 16:20:19 UTC | Merge pull request #3074 from xiang90/storage_restore storage: correctly restore create and ver | 30 June 2015, 16:20:19 UTC |
eff67af | Xiang Li | 30 June 2015, 05:05:46 UTC | Merge pull request #3081 from xiang90/storage_fix storage: fix small issues | 30 June 2015, 05:05:46 UTC |
585e74a | Xiang Li | 30 June 2015, 05:04:47 UTC | Merge pull request #3080 from xiang90/rpc add gRPC etcd service | 30 June 2015, 05:04:47 UTC |
f8b947a | Xiang Li | 30 June 2015, 05:02:21 UTC | storage: fix small issues | 30 June 2015, 05:02:21 UTC |
2fb8347 | Xiang Li | 30 June 2015, 01:59:24 UTC | etcdserver: add rpc proto | 30 June 2015, 03:00:09 UTC |
436bacd | Xiang Li | 30 June 2015, 01:59:00 UTC | *: introduce grpc dependency | 30 June 2015, 01:59:00 UTC |
718cb18 | Xiang Li | 30 June 2015, 01:50:49 UTC | Merge pull request #3079 from xiang90/gogo *: resolve proto warnings | 30 June 2015, 01:50:49 UTC |
581ef05 | Xiang Li | 30 June 2015, 01:37:52 UTC | *: resolve proto warnings | 30 June 2015, 01:39:46 UTC |
621b43b | Xiang Li | 29 June 2015, 23:59:08 UTC | Merge pull request #3078 from xiang90/gogo update gogoprotobuf dependency | 29 June 2015, 23:59:08 UTC |
13f44e4 | Xiang Li | 29 June 2015, 23:05:55 UTC | *: update generated proto code | 29 June 2015, 23:45:25 UTC |
59b479e | Xiang Li | 29 June 2015, 22:59:50 UTC | godep: update gogo version | 29 June 2015, 23:08:04 UTC |
7f95780 | Yicheng Qin | 29 June 2015, 22:34:15 UTC | etcdserver: init raft internal var early Its `stopped`/`done` should be created always before being used in defer in server loop. It fixes the race detected when running TestSyncTrigger. | 29 June 2015, 22:34:15 UTC |
235aef5 | Yicheng Qin | 29 June 2015, 20:31:30 UTC | *: bump to v2.1.0-rc.0+git | 29 June 2015, 21:02:40 UTC |
00c32ef | Yicheng Qin | 29 June 2015, 20:31:00 UTC | *: bump to v2.1.0-rc.0 | 29 June 2015, 21:02:39 UTC |
9884c9d | Yicheng Qin | 29 June 2015, 21:02:16 UTC | Merge pull request #3075 from yichengq/fix-windows Godeps/capnslog: bump to 99f6e6b8f8ea30b0f82769c1411691c44a66d015 | 29 June 2015, 21:02:16 UTC |
207b67c | Yicheng Qin | 29 June 2015, 20:45:30 UTC | Godeps/capnslog: bump to 99f6e6b8f8ea30b0f82769c1411691c44a66d015 It fixes windows building problem. | 29 June 2015, 20:47:21 UTC |
433f2ee | Xiang Li | 29 June 2015, 20:44:39 UTC | storage: correctly restore create and ver Add a restore func to correctly restore create reversion and version of keys for the index. | 29 June 2015, 20:44:43 UTC |
8d3e3ff | Xiang Li | 29 June 2015, 20:19:02 UTC | Merge pull request #3073 from xiang90/storage_ver storage: save version | 29 June 2015, 20:19:02 UTC |
ccca2b0 | Xiang Li | 29 June 2015, 19:47:17 UTC | storage: save version | 29 June 2015, 20:15:09 UTC |
bd84e67 | Yicheng Qin | 29 June 2015, 18:15:29 UTC | Merge pull request #3061 from yichengq/fix-stream-test rafthttp: fix TestStream uses outdated stream | 29 June 2015, 18:15:29 UTC |
f421eae | Yicheng Qin | 29 June 2015, 17:58:36 UTC | Merge pull request #3071 from yichengq/rename-rafthttp-metrics rafthttp: message_sent_latency metrics: channel -> sendingType | 29 June 2015, 17:58:36 UTC |
e01d53b | Xiang Li | 29 June 2015, 17:49:04 UTC | Merge pull request #2979 from xiang90/fix_sendapp raft: fix panic in send app | 29 June 2015, 17:49:04 UTC |
28342ae | Yicheng Qin | 29 June 2015, 17:46:54 UTC | rafthttp: avoid TestStream to use outdated stream The original test code before fb4b0b5cf075212f79fcdfa58533915a29c0912d doesn't work because reader side may update the stream, while writer side writes message to the old stream and fails. This PR removes unnecessary call to set term, and avoids this problem to happen on term > 1 in the future. | 29 June 2015, 17:46:54 UTC |
2afa668 | Yicheng Qin | 29 June 2015, 17:45:53 UTC | Merge pull request #3069 from yichengq/init-term rafthttp: support to init term when adding peer | 29 June 2015, 17:45:53 UTC |
6068761 | Yicheng Qin | 29 June 2015, 17:42:51 UTC | rafthttp: message_sent_latency metrics: channel -> sendingType Better naming. | 29 June 2015, 17:44:40 UTC |
4430a80 | Yicheng Qin | 29 June 2015, 17:29:23 UTC | Merge pull request #3063 from yichengq/fix-create-root etcdserver/auth: fix return value when creating root user | 29 June 2015, 17:29:23 UTC |
bb287fa | Yicheng Qin | 29 June 2015, 17:22:50 UTC | Merge pull request #3051 from yichengq/doc-rafthttp-metrics docs: doc metrics used in rafthttp package | 29 June 2015, 17:22:50 UTC |
fb4b0b5 | Yicheng Qin | 28 June 2015, 06:21:19 UTC | rafthttp: support to init term when adding peer So it doesn't need to build term-0 stream with the remote first, then update it. | 29 June 2015, 17:20:48 UTC |