|
| 1 | +Tarantool 2.10.1 |
| 2 | +================ |
| 3 | + |
| 4 | +Released on 2022-08-08. |
| 5 | + |
| 6 | +* Release: :tarantool-release:`2.10.1`. |
| 7 | +* Tag: ``2.10.1``. |
| 8 | + |
| 9 | + |
| 10 | +Overview |
| 11 | +-------- |
| 12 | + |
| 13 | +2.10.1 is the second |
| 14 | +:doc:`stable </release/policy/>` version of the 2.10 release series. |
| 15 | +It introduces 17 improvements and resolves 52 bugs since 2.10.0. |
| 16 | + |
| 17 | +The “stable” label means that we have all planned features implemented |
| 18 | +and we see no high-impact issues. However, if you encounter an issue, |
| 19 | +feel free to `report it <https://github.com/tarantool/tarantool/issues>`__ on GitHub. |
| 20 | + |
| 21 | +Notable changes are: |
| 22 | + |
| 23 | +- Interactive transactions are now possible in remote binary consoles. |
| 24 | +- Improved the string representation of datetime intervals. |
| 25 | + |
| 26 | +Compatibility |
| 27 | +------------- |
| 28 | + |
| 29 | +Tarantool 2.x is backward compatible with Tarantool 1.10.x in the binary |
| 30 | +data layout, client-server protocol, and replication protocol. |
| 31 | + |
| 32 | +Please :doc:`upgrade </book/admin/upgrades>` |
| 33 | +using the ``box.schema.upgrade()`` procedure to unlock all the new |
| 34 | +features of the 2.x series. |
| 35 | + |
| 36 | +Functionality added or changed |
| 37 | +------------------------------ |
| 38 | + |
| 39 | +Core |
| 40 | +~~~~ |
| 41 | + |
| 42 | +- **[Breaking change]** Conflicted transactions now throw the |
| 43 | + ``Transaction has been aborted by conflict`` error on any CRUD |
| 44 | + operations until they are either rolled back (which will return no |
| 45 | + error) or committed (which will return the same error) (:tarantool-issue:`7240`). |
| 46 | +- Read-view transactions now become conflicted on attempts to perform |
| 47 | + DML statements immediately. Previously, this was detected only on the |
| 48 | + transaction preparation stage, that is, when calling ``box.commit`` |
| 49 | + (:tarantool-issue:`7240`). |
| 50 | +- Interactive transactions are now possible in remote binary consoles |
| 51 | + (:tarantool-issue:`7413`). |
| 52 | +- It is now possible to omit ``space`` in declarations of foreign keys |
| 53 | + that refer to the same space (:tarantool-issue:`7200`). |
| 54 | + |
| 55 | +Datetime |
| 56 | +~~~~~~~~ |
| 57 | + |
| 58 | +- Improved the string representation of datetime intervals. Now |
| 59 | + nanoseconds aren’t converted and attached to seconds; the intervals |
| 60 | + are displayed “as is”. Example: |
| 61 | + |
| 62 | + .. code:: lua |
| 63 | +
|
| 64 | + local ival = date.interval.new{year = 12345, hour = 48, min = 3, sec = 1, |
| 65 | + nsec = 12345678} |
| 66 | + print(tostring(ival)) |
| 67 | +
|
| 68 | + Before: |
| 69 | + |
| 70 | + :: |
| 71 | + |
| 72 | + '+12345 years, 48 hours, 3 minutes, 1.012345678 seconds' |
| 73 | + |
| 74 | + Now: |
| 75 | + |
| 76 | + :: |
| 77 | + |
| 78 | + '+12345 years, 48 hours, 3 minutes, 1 seconds, 12345678 nanoseconds' |
| 79 | + |
| 80 | +Decimal |
| 81 | +~~~~~~~ |
| 82 | + |
| 83 | +- Added C module API for decimals (:tarantool-issue:`7228`). |
| 84 | +- Added Lua/C accessors for decimals into the module API (:tarantool-issue:`7228`). |
| 85 | + |
| 86 | +Tuple |
| 87 | +~~~~~ |
| 88 | + |
| 89 | +- Added the ``box_tuple_field_by_path()`` function into the module API. |
| 90 | + It allow the access to tuple fields from C code using a JSON path |
| 91 | + (:tarantool-issue:`7228`). |
| 92 | + |
| 93 | +Build |
| 94 | +~~~~~ |
| 95 | + |
| 96 | +- Fedora 30, 31, 32, and 33 are no longer supported. |
| 97 | +- Ubuntu 20.10 (Groovy Gorilla) and 21.04 (Hirsute Hippo) are no longer |
| 98 | + supported. |
| 99 | +- Updated libcurl to version 7.84.0. |
| 100 | +- Updated OpenSSL used for static builds to version 1.1.1q. |
| 101 | +- Ubuntu 21.10 (Impish Indri) is no longer supported. |
| 102 | +- Updated Ncurses used for static builds to version 6.3-20220716 . |
| 103 | +- Updated Readline used for static builds to version 8.0p1. |
| 104 | +- Updated libyaml to the version with fixed stack overflows. |
| 105 | +- Updated zstd to version 1.5.2. |
| 106 | +- Updated zlib used for static builds to version 1.2.12. |
| 107 | + |
| 108 | +Bugs fixed |
| 109 | +---------- |
| 110 | + |
| 111 | +Core |
| 112 | +~~~~ |
| 113 | + |
| 114 | +- Improved validation of incoming tuples. Now tuples coming over the |
| 115 | + network can’t contain malformed decimals, uuids, or datetime values |
| 116 | + (:tarantool-issue:`6857`). |
| 117 | + |
| 118 | +- Fixed a bug in the net.box connector because of which a client could |
| 119 | + fail to close its connection when receiving a shutdown request from |
| 120 | + the server. This could lead to the server hanging on exit (:tarantool-issue:`7225`). |
| 121 | + |
| 122 | +- Fixed a crash and possible undefined behaviour when using ``scalar`` |
| 123 | + and ``number`` indexes over fields containing both decimals and |
| 124 | + double ``Inf`` or ``NaN``. |
| 125 | + |
| 126 | + For vinyl spaces, the above conditions could lead to wrong ordering |
| 127 | + of indexed values. To fix the issue, recreate the indexes on such |
| 128 | + spaces following this |
| 129 | + `guide <https://github.com/tarantool/tarantool/wiki/Fix-wrong-order-of-decimals-and-doubles-in-indices>`__ |
| 130 | + (:tarantool-issue:`6377`). |
| 131 | + |
| 132 | +- Fixed a bug because of which a net.box connection was not properly |
| 133 | + terminated when the process had a child (for example, started with |
| 134 | + ``popen``) sharing the connection socket fd. The bug could lead to a |
| 135 | + server hanging on exit while executing the graceful shutdown protocol |
| 136 | + (:tarantool-issue:`7256`). |
| 137 | + |
| 138 | +- Removed an assertion on ``fiber_wakeup()`` calls with dead fibers in |
| 139 | + debug builds. Such behavior was inconsistent with release builds, in |
| 140 | + which the same calls were allowed (:tarantool-issue:`5843`). |
| 141 | + |
| 142 | +- Fixed the ``exclude_null`` index option not working for multikey and |
| 143 | + JSON indexes (:tarantool-issue:`5861`). |
| 144 | + |
| 145 | +- Fixed the performance degradation of fiber backtrace collection after |
| 146 | + the backtrace rework (:tarantool-issue:`7207`). |
| 147 | + |
| 148 | +- Fixed a hang when a synchronous request was issued from a net.box |
| 149 | + ``on_connect`` or ``on_schema_reload`` trigger. Now an error is |
| 150 | + raised instead (:tarantool-issue:`5358`). |
| 151 | + |
| 152 | +- Fixed a crash that could happen on x86 systems without the ``RDTSCP`` |
| 153 | + instruction (:tarantool-issue:`5869`). |
| 154 | + |
| 155 | +- Fixed a bug that allowed to access indexed fields of nested tuples |
| 156 | + with ``[*]`` in Lua (:tarantool-issue:`5226`). |
| 157 | + |
| 158 | +- Fixed the behavior of ``space_object:fselect()`` on binary data |
| 159 | + (:tarantool-issue:`7040`). |
| 160 | + |
| 161 | +- Fixed Tarantool not being able to recover from old snapshots when |
| 162 | + ``box.cfg.work_dir`` and ``box.cfg.memtx_dir`` were both set |
| 163 | + (:tarantool-issue:`7232`). |
| 164 | + |
| 165 | +- Fixed Tarantool terminations on error messages with invalid UTF-8 |
| 166 | + sequences (:tarantool-issue:`6781` and :tarantool-issue:`6934`). |
| 167 | + |
| 168 | +- Fixed a bug when the ``Transaction is active at return from function`` |
| 169 | + error was overwriting expression evaluation errors in case the |
| 170 | + expression begins a transaction (:tarantool-issue:`7288`). |
| 171 | + |
| 172 | +- Added type checking for options in net.box’s remote queries and |
| 173 | + connect method. Now graceful errors are thrown in case of incorrect |
| 174 | + options (:tarantool-issue:`6063`, :tarantool-issue:`6530`). |
| 175 | + |
| 176 | +- Fixed ``space_object:format()`` and ``space_object.foreign_key`` |
| 177 | + returning incorrect numbers of foreign key fields (:tarantool-issue:`7350`). |
| 178 | + |
| 179 | +- Fixed the foreign key check on ``space_object:truncate()`` calls |
| 180 | + (:tarantool-issue:`7309`). |
| 181 | + |
| 182 | +- Fixed a crash when ``box.stat.net.thread[i]`` is called with invalid |
| 183 | + ``i`` values (:tarantool-issue:`7196`). |
| 184 | + |
| 185 | +- Fixed a low-probability stack overflow bug in the qsort |
| 186 | + implementation. |
| 187 | + |
| 188 | +Memtx |
| 189 | +~~~~~ |
| 190 | + |
| 191 | +- Fixed the ability to perform read-only operations in conflicting |
| 192 | + transactions in memtx, which led to spurious results (:tarantool-issue:`7238`). |
| 193 | +- Fixed false assertion on repeatable ``replace`` with the memtx |
| 194 | + transaction manager enabled (:tarantool-issue:`7214`). |
| 195 | +- Fixed false transaction conflict on repeatable ``insert``/``upsert`` |
| 196 | + with the memtx transaction manager enabled (:tarantool-issue:`7217`). |
| 197 | +- Fixed dirty reads in the ``GT`` iterator of HASH indexes (:tarantool-issue:`7477`). |
| 198 | +- Fixed phantom reads in reverse iterators (:tarantool-issue:`7409`). |
| 199 | +- Fixed ``select`` with ``LE`` iterator in **memtx** **TREE** index |
| 200 | + returning deleted tuple (:tarantool-issue:`7432`). |
| 201 | +- Fixed incorrect handling of corner cases gap tracking in transaction |
| 202 | + manager (:tarantool-issue:`7375`). |
| 203 | +- Fixed a bug in the memtx hash index implementation that could lead to |
| 204 | + uncommitted data written to a snapshot file (:tarantool-issue:`7539`). |
| 205 | + |
| 206 | +Vinyl |
| 207 | +~~~~~ |
| 208 | + |
| 209 | +- Fixed a bug in the vinyl upsert squashing optimization that could |
| 210 | + lead to a segmentation fault error (:tarantool-issue:`5080`). |
| 211 | +- Fixed a bug in the vinyl garbage collector. It could skip stale |
| 212 | + tuples stored in a secondary index if upsert operations were used on |
| 213 | + the space before the index was created (:tarantool-issue:`3638`). |
| 214 | +- Fixed a bug in the vinyl read iterator that could result in a |
| 215 | + significant performance degradation of range select requests in the |
| 216 | + presence of an intensive write workload (:tarantool-issue:`5700`). |
| 217 | +- Explicitly disabled the hot standby mode for vinyl. Now an attempt to |
| 218 | + enable the hot standby mode in case the master instance has vinyl |
| 219 | + spaces results in an error. Before this change, the behavior was |
| 220 | + undefined (:tarantool-issue:`6565`). |
| 221 | + |
| 222 | +Replication |
| 223 | +~~~~~~~~~~~ |
| 224 | + |
| 225 | +- Added the logging of the error reason on a replica in case when the |
| 226 | + master didn’t send a greeting message (:tarantool-issue:`7204`). |
| 227 | +- Fixed replication being stuck occasionally for no obvious reasons. |
| 228 | +- Fixed a possible split-brain when the old synchro queue owner might |
| 229 | + finalize the transactions in the presence of the new owner (:tarantool-issue:`5295`). |
| 230 | +- Improved the detection of possible split-brain situations, for |
| 231 | + example, when multiple leaders were working independently due to |
| 232 | + manually lowered quorum. Once a node discovers that it received some |
| 233 | + foreign data, it immediately stops replication from such a node with |
| 234 | + an ``ER_SPLIT_BRAIN`` error (:tarantool-issue:`5295`). |
| 235 | +- Fixed a false positive split-brain error after ``box.ctl.demote()`` |
| 236 | + (:tarantool-issue:`7286`). |
| 237 | +- Fixed a bug when followers with ``box.cfg.election_mode`` turned on |
| 238 | + did not notice the leader hang due to a long request, such as a |
| 239 | + ``select{}`` from a large space or a ``pairs`` iteration without |
| 240 | + yields between loop cycles (:tarantool-issue:`7512`). |
| 241 | + |
| 242 | +LuaJIT |
| 243 | +~~~~~~ |
| 244 | + |
| 245 | +Backported patches from vanilla LuaJIT trunk (:tarantool-issue:`6548` and :tarantool-issue:`7230`). |
| 246 | +In the scope of this activity, the following issues have been resolved: |
| 247 | + |
| 248 | +- Fixed emitting for fuse load of constant in GC64 mode (:tarantool-issue:`4095`, |
| 249 | + :tarantool-issue:`4199`, :tarantool-issue:`4614`). |
| 250 | + |
| 251 | +- Now initialization of zero-filled struct is compiled (:tarantool-issue:`4630`, |
| 252 | + :tarantool-issue:`5885`). |
| 253 | + |
| 254 | +- Actually implemented ``maxirconst`` option for tuning JIT compiler. |
| 255 | + |
| 256 | +- Fixed JIT stack of Lua slots overflow during recording for metamethod |
| 257 | + calls. |
| 258 | + |
| 259 | +- Fixed bytecode dump unpatching for JLOOP in up-recursion compiled |
| 260 | + functions. |
| 261 | + |
| 262 | +- Fixed FOLD rule for strength reduction of widening in cdata indexing. |
| 263 | + |
| 264 | +- Fixed ``string.char()`` recording without arguments. |
| 265 | + |
| 266 | +- Fixed ``print()`` behaviour with the reloaded default metatable for |
| 267 | + numbers. |
| 268 | + |
| 269 | +- ``tonumber("-0")`` now saves the sign of number for conversion. |
| 270 | + |
| 271 | +- ``tonumber()`` now gives predictable results for negative non-base-10 |
| 272 | + numbers. |
| 273 | + |
| 274 | +- Fixed write barrier for ``debug.setupvalue()`` and |
| 275 | + ``lua_setupvalue()``. |
| 276 | + |
| 277 | +- Fixed conflict between 64 bit lightuserdata and ITERN key for ARM64. |
| 278 | + |
| 279 | +- Fixed emitting assembly for HREFK on ARM64. |
| 280 | + |
| 281 | +- Fixed pass-by-value struct in FFI calls on ARM64. |
| 282 | + |
| 283 | +- ``jit.p`` now flushes and closes output file after run, not at |
| 284 | + program exit. |
| 285 | + |
| 286 | +- Fixed ``jit.p`` profiler interaction with GC finalizers. |
| 287 | + |
| 288 | +- Fixed the case for partial recording of vararg function body with the |
| 289 | + fixed number of result values in with ``LJ_GC64`` (i.e. ``LJ_FR2`` |
| 290 | + enabled) (:tarantool-issue:`7172`). |
| 291 | + |
| 292 | +- Added ``/proc/self/exe`` symlink resolution to the symtab module to |
| 293 | + obtain the ``.symtab`` section for the Tarantool executable. |
| 294 | + |
| 295 | +- Introduced stack sandwich support to sysprof’s parser (:tarantool-issue:`7244`). |
| 296 | + |
| 297 | +- Disabled proto and trace information dumpers in sysprof’s default |
| 298 | + mode. Attempts to use them lead to a segmentation fault due to an |
| 299 | + uninitialized buffer (:tarantool-issue:`7264`). |
| 300 | + |
| 301 | +- Fixed handling of errors during trace snapshot restore. |
| 302 | + |
| 303 | +Lua |
| 304 | +~~~ |
| 305 | + |
| 306 | +- The ``fiber_obj:info()`` now correctly handles its options (:tarantool-issue:`7210`). |
| 307 | +- Fixed a bug when Ctrl+C doesn’t discard the multiline input |
| 308 | + (:tarantool-issue:`7109`). |
| 309 | + |
| 310 | +SQL |
| 311 | +~~~ |
| 312 | + |
| 313 | +- Fixed the creation of ephemeral space format in ``ORDER BY`` |
| 314 | + (:tarantool-issue:`7043`). |
| 315 | +- The result type of arithmetic operations between two unsigned values |
| 316 | + is now ``INTEGER`` (:tarantool-issue:`7295`). |
| 317 | +- Fixed a bug with the ``ANY`` type in the ephemeral space format in |
| 318 | + ``ORDER BY`` (:tarantool-issue:`7043`). |
| 319 | +- Truncation of a space no longer corrupts prepared statements |
| 320 | + (:tarantool-issue:`7358`). |
| 321 | + |
| 322 | +Datetime |
| 323 | +~~~~~~~~ |
| 324 | + |
| 325 | +- Fixed a bug when ``date:set{hour=nil,min=XXX}`` did not retain the |
| 326 | + original ``hour`` value (:tarantool-issue:`7298`). |
| 327 | +- Introduced the validation of incoming data at the moment messagepack |
| 328 | + is converted to datetime (:tarantool-issue:`6723`). |
| 329 | + |
| 330 | +HTTP client |
| 331 | +~~~~~~~~~~~ |
| 332 | + |
| 333 | +- Enabled the automatic detection of system CA certificates in the |
| 334 | + runtime (:tarantool-issue:`7372`). It was disabled in 2.10.0, which led to the |
| 335 | + inability to use HTTPS without the ``verify_peer = false`` option. |
| 336 | + |
| 337 | + |
| 338 | +Build |
| 339 | +~~~~~ |
| 340 | + |
| 341 | +- Fixed a build failure with gcc if libpbf is installed (:tarantool-issue:`7292`). |
| 342 | +- Fixed the static build on Mac OS 11 and newer (:tarantool-issue:`7459`). |
0 commit comments