CHANGELOG.md 2.73 KB
Newer Older
1
2
3
# Changelog
All notable changes to this project will be documented in this file.

4
5
6
7
8
9
10
11
12
13
14
## Unreleased
### Added
- Protection against 1-way network partitions, in which a cluster node
  is able to establish TCP connections to others, but the rest cannot do the same.

  This resulted in cluster disruption as the affected node would not be receiving
  heartbeats, but could still repeatedly attempt to get elected.

  From now on, a node which has been vetoed will abstain from starting election
  rounds until it has received fresh heartbeats since receiving that veto.

15
16
17
### Fixed
- A couple of minor memory leaks.

Georgios Bitzes's avatar
Georgios Bitzes committed
18
## 0.3.1 (2018-08-03)
19
20
21
### Added
- Command `hclone` for creating identical copies of entire hashes.

22
23
24
### Fixed
- An `EXEC` when not inside a `MULTI` would cause a crash.

25
26
27
28
29
30
## 0.2.9 (2018-07-16)
### Added
- Commands `convert-string-to-int`, `convert-int-to-string` to convert between
  binary-string-encoded integers and human-readable-ASCII encoding. Meant for
  interactive use only, to make life easier during low-level debugging when
  needing to edit low-level rocksdb keys, where binary-encoded integers are used.
31

32
33
34
### Changed
- Refactoring of transactions, we no longer pack / unpack a transaction into a single request within the same node, saving
  CPU cycles.
35
- Explicitly block zero-sized strings when parsing the redis protocol, print appropriate warning.
36
37
38
39
40
41
42

### Fixed
- In certain cases, such as when redirecting or reporting unavailability for pipelined writes, fewer
  responses might be provided than expected, causing the client connection to hang. This did not affect
  QClient when redirects are active, as it would shut the connection down and retry upon reception of
  the first such response.

43
## 0.2.8 (2018-07-04)
44
45
46
47
48
49
50
51
### Added
- Support for leases, which can be used as locks with timeouts, allowing QuarkDB to serve as a distributed lock manager.
- Commands `lease-acquire`, `lease-get`, `lease-release`.

### Changed
- A newly elected leader now stalls writers in addition to readers, until its leadership marker entry in the raft journal has been committed and applied.

### Fixed
52
- Sockets and threads from closed connections were not being cleaned due to misunderstanding how XRootD handles connection shutdown. Each connection would hog a socket and a deadlocked thread on the server forever. (oops)
53
54
55
56
57
58
59
60
- A particularly rare race condition was able to trigger an assertion in the Raft subsystem, causing the current cluster leader to crash.

## 0.2.7 (2018-06-22)
### Added
- Updated rocksdb dependency to 5.13.4.

### Fixed
- Certain unlikely sequences of pipelined writes were able to trigger an assertion and bring a cluster down, when part of a transaction. Without that assertion, the commands would have left ghost key-value pairs in the rocksdb keyspace.