Kirill, how your approach will help if user tuned a cluster to do checkpoints rarely under load? No way.
пт, 6 нояб. 2020 г. в 12:19, ткаленко кирилл <tkalkir...@yandex.ru>: > Ivan, I agree with you that the archive is primarily about optimization. > > If the size of the archive is critical for the user, we have no protection > against this, we can always go beyond this limit. > Thus, the user needs to remember this and configure it in some way. > > I suggest not to exceed this limit and give the expected behavior for the > user. At the same time, the segments needed for recovery will remain and > there will be no data loss. > > 06.11.2020, 11:29, "Ivan Daschinsky" <ivanda...@gmail.com>: > > Guys, fisrt of all, archiving is not for PITR at all, this is > optimization. > > If we disable archiving, every rollover we need to create new file. If we > > enable archiving, we reserve 10 (by default) segments filled with zeroes. > > We use mmap by default, so if we use no-archiver approach: > > 1. We firstly create new empty file > > 2. Call on it sun.nio.ch.FileChannelImpl#map, thats under the hood > > a. If file is shorter, than wal segment size, it > > calls sun.nio.ch.FileDispatcherImpl#truncate0, this is under the hood > just > > a system call truncate [1] > > b. Than it calls system call mmap on this > > file sun.nio.ch.FileChannelImpl#map0, under the hood see [2] > > These manipulation are not free and cheap. So rollover will be much much > > slower. > > If archiving is enabled, 10 segments are already preallocated at the > moment > > of node's start. > > > > When archiving is enabled, archiver just copy previous preallocated > segment > > and move it to archive directory. > > This archived segment is crucial for recovery. When new checkpoints > > finished, all eligible for trunocating segments are just removed. > > > > If archiving is disabled, we also write WAL segments in wal directory and > > disabling archiving don't prevent you from storing segments, if they are > > required for recovery. > > > >>> Before increasing the size of WAL archive (transferring to archive > > > > /rollOver, compression, decompression), we can make sure that there will > be > > enough space in the archive and if there is no such, then we will try to > >>> clean it. We cannot delete those segments that are required for > recovery > > > > (between the last two checkpoints) and reserved for example for > historical > > rebalancing. > > First of all, compression/decompression is offtopic here. > > Secondly, wal segments are required only with idx higher than LAST > > checkpoint marker. > > Thirdly, archiving and rolling over can be during checkpoint and we can > > broke everything accidentially. > > Fourthly, I see no benefits to overcomplicated already complicated logic. > > This is basically problem of misunderstanding and tuning. > > There are a lot of similar topics for almost every DB. [3] > > > > [1] -- https://man7.org/linux/man-pages/man2/ftruncate.2.html > > [2] -- https://man7.org/linux/man-pages/man2/mmap.2.html > > [3] -- > > > https://www.google.com/search?q=pg_wal%2Fxlogtemp+no+space+left+on+device&oq=pg+wal+no > > > > пт, 6 нояб. 2020 г. в 10:42, ткаленко кирилл <tkalkir...@yandex.ru>: > > > >> Hi, Ivan! > >> > >> I have only described ideas. But here are a few more details. > >> > >> We can take care not to go beyond > >> DataStorageConfiguration#maxWalArchiveSize. > >> > >> Before increasing the size of WAL archive (transferring to archive > >> /rollOver, compression, decompression), we can make sure that there > will be > >> enough space in the archive and if there is no such, then we will try > to > >> clean it. We cannot delete those segments that are required for > recovery > >> (between the last two checkpoints) and reserved for example for > historical > >> rebalancing. > >> > >> We can receive a notification about the change of checkpoints and the > >> reservation / release of segments, thus we can know how many segments > we > >> can delete right now. > >> > >> 06.11.2020, 09:53, "Ivan Daschinsky" <ivanda...@gmail.com>: > >> >>> For example, when trying to move a segment to the archive. > >> > > >> > We cannot do this, we will lost data. We can truncate archived > segment if > >> > and only if it is not required for recovery. If last checkpoint > marker > >> > points to segment > >> > with lower index, we cannot delete any segment with higher index. So > the > >> > only moment where we can remove truncate segments is a finish of > >> checkpoint. > >> > > >> > пт, 6 нояб. 2020 г. в 09:46, ткаленко кирилл <tkalkir...@yandex.ru>: > >> > > >> >> Hello, everybody! > >> >> > >> >> As far as I know, WAL archive is used for PITP(GridGain feature) and > >> >> historical rebalancing. > >> >> > >> >> Facundo seems to have a problem with running out of directory > >> >> (/opt/work/walarchive) space. > >> >> Currently, WAL archive is cleared at the end of checkpoint. > Potentially > >> >> long transaction may prevent checkpoint starting, thereby not > cleaning > >> WAL > >> >> archive, which will lead to such an error. > >> >> At the moment, I see such a WA to increase size of directory > >> >> (/opt/work/walarchive) in k8s and avoid long transactions or > something > >> like > >> >> that that modifies data and runs for a long time. > >> >> > >> >> And it is best to fix the logic of working with WAL archive. I > think we > >> >> should remove WAL archive cleanup from the end of the checkpoint and > >> do it > >> >> on demand. For example, when trying to move a segment to the > archive. > >> >> > >> >> 06.11.2020, 01:58, "Denis Magda" <dma...@apache.org>: > >> >> > Folks, > >> >> > > >> >> > In my understanding, you need the archives only for features such > as > >> >> PITR. > >> >> > Considering, that the PITR functionality is not provided in Ignite > >> why do > >> >> > we have the archives enabled by default? > >> >> > > >> >> > How about having this feature disabled by default to prevent the > >> >> following > >> >> > issues experienced by our users: > >> >> > > >> >> > >> > http://apache-ignite-users.70518.x6.nabble.com/WAL-and-WAL-Archive-volume-size-recommendation-td34458.html > >> >> > > >> >> > - > >> >> > Denis > >> > > >> > -- > >> > Sincerely yours, Ivan Daschinskiy > > > > -- > > Sincerely yours, Ivan Daschinskiy > -- Sincerely yours, Ivan Daschinskiy