Alex, thanks for pointing that out. Shame that I missed it.

пт, 6 нояб. 2020 г. в 13:45, Alex Plehanov <plehanov.a...@gmail.com>:

> Guys,
>
> We already have FileWriteAheadLogManager#maxSegCountWithoutCheckpoint.
> Checkpoint triggered if there are too many WAL segments without checkpoint.
> Looks like you are talking about this feature.
>
> пт, 6 нояб. 2020 г. в 13:21, Ivan Daschinsky <ivanda...@gmail.com>:
>
> > Kirill and I discussed privately proposed approach. As far as I
> understand,
> > Kirill suggests to implement some
> > heuristic to do a force checkpoint in some cases if user by mistake
> > misconfigured cluster in order to preserve
> > requested size of WAL archive.
> > Currently, as for me, this approach is questionable, because it can cause
> > some performance problems. But as an option,
> > it can be used and should be switchable.
> >
> > пт, 6 нояб. 2020 г. в 12:36, Ivan Daschinsky <ivanda...@gmail.com>:
> >
> > > 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
> > >
> >
> >
> > --
> > Sincerely yours, Ivan Daschinskiy
> >
>


-- 
Sincerely yours, Ivan Daschinskiy

Reply via email to