https://clickhouse-test-reports.s3.yandex.net/0/bd7b540b8255475ad584e814a8eeeb1386645fda/functional_stateless_tests_(release).html#fail1
server logs

```
2021.03.03 07:12:43.919384 [ 34343 ] {9e90754b-c3a1-4c51-a7a1-697104df992d} <Error> TCPHandler: Code: 999, e.displayText() = DB::Exception: Can't get data for node /clickhouse/tables/test_01305/alter_table/metadata: node doesn't exist (No 
node), Stack trace:                                                                                                                                                                                                                            
                                                                                                                                                                                                                                               
0. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error, int) @ 0xfbcd5c3 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4
.debug                                                                                                                                                                                                                                         
1. Coordination::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Error) @ 0xfbcd842 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debu
g                                                                                                                                                                                                                                              
2. zkutil::ZooKeeper::get(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, Coordination::Stat*, std::__1::shared_ptr<Poco::Event> const&) @ 0xfbd4ad2 in /usr/lib/debug/.build-id/1c/f54413784e79a
e4a9d0206c5db6611836f80c4.debug                                                                                                                                                                                                                
3. DB::StorageReplicatedMergeTree::checkTableStructure(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::StorageInMemoryMetadata const> const&) @ 0xf3b8f13 in /usr/lib/de
bug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug                                                                                                                                                                                  
4. DB::StorageReplicatedMergeTree::StorageReplicatedMergeTree(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>
 > const&, bool, DB::StorageID const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::StorageInMemoryMetadata const&, DB::Context&, std::__1::basic_string<char, std::__1::char_traits<char>
, std::__1::allocator<char> > const&, DB::MergeTreeData::MergingParams const&, std::__1::unique_ptr<DB::MergeTreeSettings, std::__1::default_delete<DB::MergeTreeSettings> >, bool, bool) @ 0xf3b2965 in /usr/lib/debug/.build-id/1c/f54413784e
79ae4a9d0206c5db6611836f80c4.debug
5. DB::create(DB::StorageFactory::Arguments const&) @ 0xf7acdbf in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
6. DB::StorageFactory::get(DB::ASTCreateQuery const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, DB::Context&, DB::ColumnsDescription const&, DB::ConstraintsDescription const
&, bool) const @ 0xf2fcf59 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
7. DB::InterpreterCreateQuery::doCreateTable(DB::ASTCreateQuery&, DB::InterpreterCreateQuery::TableProperties const&) @ 0xebcc0b4 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
8. DB::InterpreterCreateQuery::createTable(DB::ASTCreateQuery&) @ 0xebc8f52 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
9. DB::InterpreterCreateQuery::execute() @ 0xebce4d0 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
10. DB::executeQueryImpl(char const*, char const*, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool, DB::ReadBuffer*) @ 0xf11d9f2 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
11. DB::executeQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, DB::Context&, bool, DB::QueryProcessingStage::Enum, bool) @ 0xf11c333 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c
5db6611836f80c4.debug
12. DB::TCPHandler::runImpl() @ 0xf8927ad in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
13. DB::TCPHandler::run() @ 0xf8a4b39 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
14. Poco::Net::TCPServerConnection::start() @ 0x11f5642f in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
15. Poco::Net::TCPServerDispatcher::run() @ 0x11f57e41 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
16. Poco::PooledThread::run() @ 0x1208e569 in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
17. Poco::ThreadImpl::runnableEntry(void*) @ 0x1208a3ca in /usr/lib/debug/.build-id/1c/f54413784e79ae4a9d0206c5db6611836f80c4.debug
18. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
19. __clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
```
* - [FS] first write the part into a temporary directory on the filesystem;
  * - [FS] rename the temporary part to the result on the filesystem;
  * - [RAM] immediately afterwards add it to the `data_parts`, and remove from `data_parts` any parts covered by this one;
  * - [RAM] also set the `Transaction` object, which in case of an exception (in next point),
  *   rolls back the changes in `data_parts` (from the previous point) back;
  * - [ZK] then send a transaction (multi) to add a part to ZooKeeper (and some more actions);
  * - [FS, ZK] by the way, removing the covered (old) parts from filesystem, from ZooKeeper and from `all_data_parts`
  *   is delayed, after a few minutes.
  *
  * There is no atomicity here.
  * It could be possible to achieve atomicity using undo/redo logs and a flag in `DataPart` when it is completely ready.
  * But it would be inconvenient - I would have to write undo/redo logs for each `Part` in ZK, and this would increase already large number of interactions.
  *
  * Instead, we are forced to work in a situation where at any time
  *  (from another thread, or after server restart), there may be an unfinished transaction.
  *  (note - for this the part should be in RAM)
  * From these cases the most frequent one is when the part is already in the data_parts, but it's not yet in ZooKeeper.
  * This case must be distinguished from the case where such a situation is achieved due to some kind of damage to the state.
  *
  * Do this with the threshold for the time.
  * If the part is young enough, its lack in ZooKeeper will be perceived optimistically - as if it just did not have time to be added there
  *  - as if the transaction has not yet been executed, but will soon be executed.
  * And if the part is old, its absence in ZooKeeper will be perceived as an unfinished transaction that needs to be rolled back.
  *
  * PS. Perhaps it would be better to add a flag to the DataPart that a part is inserted into ZK.
  * But here it's too easy to get confused with the consistency of this flag.
  */
#define MAX_AGE_OF_LOCAL_PART_THAT_WASNT_ADDED_TO_ZOOKEEPER (5 * 60)
}