Folks,

I don't agree that it should be a single script for the whole migration process.
I don't think we should have some kind of automated `decision-maker`
processes for the migration procedure.

We should have well-defined documentation pages + the `migration`
directory with a single .sh per single operation.
For example:
1. binary_marshaller_move.sh -- move to binary, marshaller directories.
2. nodeId_to_consistentId.sh -- change a node directory to the new format.

The migration for each new version will require different sets of
these scripts (supposedly less than 10 in total).
I think users will be able to run each script manually to achieve PDS
compatibility according to their version.

On Fri, 15 May 2020 at 17:19, Anton Kalashnikov <kaa....@yandex.ru> wrote:
>
> Hello,
>
> I agree with the described disadvantages(which Maxim mentioned) and I think 
> it is a good idea to discuss a new way of pds migration in an extra ticket. 
> But also, I agree with Denis that the script will add ambiguity(it's not 
> clear which script should be used and when) if we add it. In my opinion, 
> maybe the better way is to store some migration metainformation in ignite 
> metastorage, and in case, when this information not found, execute some 
> migration code - but of course, there is a lot to discuss.
>
> According to this task, I don't see any problem if we left it as is because 
> the overhead is minimum right now(only on start and only if the old folder 
> exists). Also, we can easily drop(or move) this piece of code if we implement 
> a new migration way in some time.
>
> --
> Best regards,
> Anton Kalashnikov
>
>
> 13.05.2020, 21:59, "Denis Mekhanikov" <dmekhani...@gmail.com>:
> > Maxim,
> >
> > This way we'll introduce a migration procedure between versions, which
> > we currently don't have. Different Ignite versions are compatible by
> > persistence storage. If we add a migration script, we need to decide,
> > whether we need to run it every time when the version is upgraded, or
> > only some specific versions are affected.
> >
> > I suggest having a procedure that will look for metadata in the work
> > directory, and if it finds it there, then the node will use it.
> > Otherwise the persistence directory is used.
> >
> > Denis
> >
> > On 13.05.2020 21:40, Maxim Muzafarov wrote:
> >>  Folks,
> >>
> >>  I think it's important to discuss the following question regarding this 
> >> thread:
> >>  Should we consider moving the migration procedure from the java
> >>  production code to migration scripts?
> >>
> >>   From my understanding, keeping all such things in java production
> >>  source code has some disadvantages:
> >>  1. It executes only once at the migration stage.
> >>  2. It affects the complexity of the source code and code maintenance.
> >>  3. Node crash cases must be covered during the migration procedure.
> >>  4. It affects the production usage e.g. the process doesn't have the
> >>  right access to the old directory (migration already completed) and
> >>  will fail the node start.
> >>
> >>  The right behavior from my point should be:
> >>  1. Change the default path of binary/marshaller directory to the new one.
> >>  2. Provide migration scripts for users.
> >>
> >>  WDYT?
> >>
> >>  On Wed, 13 May 2020 at 21:10, Denis Mekhanikov <dmekhani...@gmail.com> 
> >> wrote:
> >>>  Sounds great!
> >>>
> >>>  It happens pretty frequently that users migrate to a new version of
> >>>  Ignite and preserve persistence files only without caring too much about
> >>>  the work folder. But it turns out, that the work folder actually has
> >>>  some important stuff.
> >>>  This improvement should help with this issue.
> >>>
> >>>  What's about in-memory mode? As far as I know, we write binary metadata
> >>>  to disk even when no persistence is configured. Do you plan to address
> >>>  it in any way?
> >>>
> >>>  Denis
> >>>
> >>>  On 12.05.2020 15:56, Sergey Antonov wrote:
> >>>>  Hello Semyon,
> >>>>
> >>>>  This is a good idea!
> >>>>
> >>>>  вт, 12 мая 2020 г. в 15:53, Вячеслав Коптилин 
> >>>> <slava.kopti...@gmail.com>:
> >>>>
> >>>>>  Hello Semyon,
> >>>>>
> >>>>>  This is a good and long-awaited improvement! Thank you for your 
> >>>>> efforts!
> >>>>>
> >>>>>  Thanks,
> >>>>>  S.
> >>>>>
> >>>>>  вт, 12 мая 2020 г. в 15:11, Данилов Семён <samvi...@yandex.ru>:
> >>>>>
> >>>>>>  Hello!
> >>>>>>
> >>>>>>  I would like to propose moving /binary_meta and /marshaller folders to
> >>>>>  the
> >>>>>>  PDS folder.
> >>>>>>
> >>>>>>  Motivation: data, directly related to the persistence, is stored 
> >>>>>> outside
> >>>>>>  the persistence dir, which can lead to various issues and also is not
> >>>>>  very
> >>>>>>  convenient to use. In particular, with k8s, deployment disk that is
> >>>>>>  attached to a container can not be accessed from other containers or
> >>>>>>  outside of k8s. In case if support will need to drop persistence 
> >>>>>> except
> >>>>>>  data, there will be no way to recover due to binary metadata is 
> >>>>>> required
> >>>>>  to
> >>>>>>  process PDS files.
> >>>>>>
> >>>>>>  I created an issue 
> >>>>>> (https://issues.apache.org/jira/browse/IGNITE-12994)
> >>>>>  and a
> >>>>>>  pull request(https://github.com/apache/ignite/pull/7792) that fixes 
> >>>>>> the
> >>>>>>  issue.
> >>>>>>
> >>>>>>  In that PR I made the following:
> >>>>>>
> >>>>>>  * store binary meta and marshaller data inside db/ folder
> >>>>>>  * if binary meta of marshaller are found in "legacy" locations --
> >>>>>>  safely move them to new locations during the node startup
> >>>>>>
> >>>>>>  Kind regards,
> >>>>>>
> >>>>>>  Semyon Danilov.

Reply via email to