Difference between revisions of "Deprecation"

From CRIU
Jump to navigation Jump to search
 
(27 intermediate revisions by the same user not shown)
Line 1: Line 1:
This page collects stuff that is considered to be deprecated (and is about to be removed)
+
This page collects stuff that is considered to be deprecated (and is about to be removed) and how to use older CRIU versions
 +
 
 +
== Problem ==
 +
 
 +
Sometimes we reconsider the way CRIU works and rewrite some functionality. In order not to break backward compatibility at once, the old code is kept in CRIU for a while, but is declared as deprecated. After some time the old code is just removed and only the newer version of it stays.
 +
 
 +
So, for a deprecated functionality there are two versions of CRIU -- D and R -- that work differently with it. Before version D the old functionality exists. Between D and R both -- old and new ways of doing things work, after R only new code works, old behavior is not longer supported.
 +
 
 +
When old functionality is deprecated (and eventually removed) we try to encourage people to upgrade CRIU-s and the way they use. So, if one starts CRIU of version between D and R and the deprecated functionality is requested, the message
 +
 
 +
<pre>
 +
Deprecated functionality (...) rejected.
 +
Use the --deprecated option or set CRIU_DEPRECATED environment.
 +
For details visit https://criu.org/Deprecation.
 +
</pre>
 +
 
 +
appears in logs and criu exits. To continue working "the old way" w/o upgrading CRIU one may use the --deprecated option in CLI or set the CRIU_DEPRECATED environment variable.
 +
 
 +
But (!) it's important to upgrade anyway, since after some time the old functionality will still be removed and even the --deprecated/CRIU_DEPRECATED won't help.
 +
 
 +
Below is the list of stuff we deprecate with explanations.
 +
 
 +
== Deprecated stuff ==
 +
 
 +
; Per-pid rlimits, itimers and posix_timers image file
 +
: Deprecated in [[Download/criu/2.6|2.6]]. Now all this stuff sit in the core entry (all since 1.3)
 +
 
 +
; Separate image file for epoll tfds
 +
: Deprecated in [[Download/criu/2.6|2.6]]. It's now merged into epoll image since 1.4
 +
 
 +
; No-file records for ttys
 +
: Deprecated in [[Download/criu/2.7|2.7]]. See [[TTYs]] and <code>collect_one_tty()</code> routine in sources. Older versions of criu (before [[Download/criu/1.4|1.4]] commit caa64d97) didn't have reg_file_entry for ttys.
 +
 
 +
; Dedicated options for external resources
 +
: Deprecated in [[Download/criu/2.8|2.8]]. {{Opt|--external}} is to be used instead of {{OptD|--ext-unix-sk}}, {{OptD|--veth-pair}}, {{OptD|--ext-mount-map}} and some more.
 +
 
 +
; Separate image file for fsnotify marks
 +
: Deprecated in [[Download/criu/3.2|3.2]].
 +
 
 +
== Removed stuff ==
 +
; The <code>criu show</code> action
 +
: Removed in [[Download/criu/2.0|2.0]]. Use [[CRIT]] instead
 +
 
 +
; No ids.img files
 +
: Removed in [[Download/criu/2.1|2.1]]. We've been writing these files since at least v0.4, no deprecation period.
 +
 
 +
; The <code>--namespaces</code> option
 +
: Removed in [[Download/criu/2.2|2.2]]. It was used when we didn't have /proc/pid/ns stuff, now it's useless, no deprecation period.
  
== Current plan ==
 
 
; Per-pid fdinfo.img file
 
; Per-pid fdinfo.img file
: The new layout (marked with respective bit in inventory) is per-fdtable-id
+
: Removed in [[Download/criu/2.4|2.4]]. The new layout (marked with respective bit in inventory) is per-fdtable-id, no deprecation period.
 +
 
 +
; Per-pid file locks
 +
: Removed in [[Download/criu/2.4|2.4]]. Now all locks sit in the file-locks.img file, no deprecation period.
 +
 
 +
; Old page-read
 +
: Removed in [[Download/criu/2.4|2.4]]. Used at ancient times when no pagemaps existed, no deprecation period.
 +
 
 +
== Plans ==
 +
 
 +
=== The <code>criu exec</code> action ===
 +
Should be deprecated with [[Compel]]
 +
 
 +
=== Per-PID logs ===
  
== Already deprecated stuff ==
+
See [[logging]]. Not sure whether anybody is using it.
; The <code>criu show</code> action.
 
: Deprecated in [[Download/criu/2.0|2.0]] with [[CRIT]]
 
  
 
== See also ==
 
== See also ==

Latest revision as of 10:08, 16 June 2017

This page collects stuff that is considered to be deprecated (and is about to be removed) and how to use older CRIU versions

Problem[edit]

Sometimes we reconsider the way CRIU works and rewrite some functionality. In order not to break backward compatibility at once, the old code is kept in CRIU for a while, but is declared as deprecated. After some time the old code is just removed and only the newer version of it stays.

So, for a deprecated functionality there are two versions of CRIU -- D and R -- that work differently with it. Before version D the old functionality exists. Between D and R both -- old and new ways of doing things work, after R only new code works, old behavior is not longer supported.

When old functionality is deprecated (and eventually removed) we try to encourage people to upgrade CRIU-s and the way they use. So, if one starts CRIU of version between D and R and the deprecated functionality is requested, the message

Deprecated functionality (...) rejected.
Use the --deprecated option or set CRIU_DEPRECATED environment.
For details visit https://criu.org/Deprecation.

appears in logs and criu exits. To continue working "the old way" w/o upgrading CRIU one may use the --deprecated option in CLI or set the CRIU_DEPRECATED environment variable.

But (!) it's important to upgrade anyway, since after some time the old functionality will still be removed and even the --deprecated/CRIU_DEPRECATED won't help.

Below is the list of stuff we deprecate with explanations.

Deprecated stuff[edit]

Per-pid rlimits, itimers and posix_timers image file
Deprecated in 2.6. Now all this stuff sit in the core entry (all since 1.3)
Separate image file for epoll tfds
Deprecated in 2.6. It's now merged into epoll image since 1.4
No-file records for ttys
Deprecated in 2.7. See TTYs and collect_one_tty() routine in sources. Older versions of criu (before 1.4 commit caa64d97) didn't have reg_file_entry for ttys.
Dedicated options for external resources
Deprecated in 2.8. --external is to be used instead of --ext-unix-sk, --veth-pair, --ext-mount-map and some more.
Separate image file for fsnotify marks
Deprecated in 3.2.

Removed stuff[edit]

The criu show action
Removed in 2.0. Use CRIT instead
No ids.img files
Removed in 2.1. We've been writing these files since at least v0.4, no deprecation period.
The --namespaces option
Removed in 2.2. It was used when we didn't have /proc/pid/ns stuff, now it's useless, no deprecation period.
Per-pid fdinfo.img file
Removed in 2.4. The new layout (marked with respective bit in inventory) is per-fdtable-id, no deprecation period.
Per-pid file locks
Removed in 2.4. Now all locks sit in the file-locks.img file, no deprecation period.
Old page-read
Removed in 2.4. Used at ancient times when no pagemaps existed, no deprecation period.

Plans[edit]

The criu exec action[edit]

Should be deprecated with Compel

Per-PID logs[edit]

See logging. Not sure whether anybody is using it.

See also[edit]

What's bad with V1 images