Hello guys again!

Does anyone know why we are doing any calculation here 
IgniteUtils#adjustedWalHistorySize at all?
Would it be easier to always take the 
DataStorageConfiguration#maxWalArchiveSize? It seems that the user can easily 
do this himself by changing the value by 1 byte.

06.11.2020, 13:56, "Ivan Daschinsky" <ivanda...@gmail.com>:
> 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