<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <meta name="generator" content="pandoc" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
  <style>
html {
  line-height: 1.2;
  font-family: serif;
  font-size: 0.9em;
  color: black; 
  background-color: white;
}
body {
  margin: 0;
  margin-right: auto;
  max-width: 36em;
  padding: 1em;
  hyphens: auto;
  overflow-wrap: break-word;
  text-rendering: optimizeLegibility;
  font-kerning: normal;
}
@media print {
  body {
    background-color: transparent;
    color: black;
    font-size: 11pt;
  }
  p, h2, h3 {
    orphans: 3;
    widows: 3;
  }
  h2, h3, h4 {
    page-break-after: avoid;
  }
}
p {
  margin: 1em 0;
}
a {
  color: black;
}
a:visited {
  color: black;
}
img {
  max-width: 100%;
}
h1, h2, h3, h4, h5, h6 {
  margin-top: 1.4em;
}
h5, h6 {
  font-size: 1em;
  font-style: italic;
}
h6 {
  font-weight: normal;
}
ol, ul {
  padding-left: 1.7em;
  margin-top: 1em;
}
li > ol, li > ul {
  margin-top: 0;
}
blockquote {
  margin: 0.5em;
  padding-left: 0.5em;
  border-left: 2px solid #e6e6e6;
  color: #444;
}
code {
  font-family: 'Lucida Console', monospace;
  font-size: 95%;
  margin: 0;
}
pre {
  margin: 1em 0;
  overflow: auto;
  max-width: unset;
  width: fit-content;
}
pre code {
  padding: 0;
  overflow: visible;
  overflow-wrap: normal;
  max-width: unset;
  white-space: pre-wrap;
}
pre code span {
  white-space: pre;
}
.sourceCode {
 background-color: transparent;
 overflow: visible;
}

code.diff span.kw,
code.diff span.dt {
  font-weight: bold;
}

code.diff span.va {
  background-color: rgba(192, 255, 192, 64);
  color: rgb(0, 64, 0);
}

code.diff span.st {
  background-color: rgba(255, 192, 192, 64);
  color: rgb(64, 0, 0);
}

pre.diff {
  background-color: rgb(240, 240, 240);
  padding: 0.4em;
  border: 1pt solid grey;
}

hr {
  background-color: black;
  border: none;
  height: 1px;
  margin: 1em 0;
}
table {
  margin: 1em 0;
  border-collapse: collapse;
  width: 100%;
  overflow-x: auto;
  display: block;
  font-variant-numeric: lining-nums tabular-nums;
}
table caption {
  margin-bottom: 0.75em;
}
tbody {
  margin-top: 0.5em;
  border-top: 1px solid black;
  border-bottom: 1px solid black;
}
th {
  border-top: 1px solid black;
  padding: 0.25em 0.5em 0.25em 0.5em;
}
td {
  padding: 0.125em 0.5em 0.25em 0.5em;
}
header {
  margin-bottom: 4em;
  text-align: center;
}
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
q { quotes: "„" "”" "»" "«"; }
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
  </style>
</head>
<body>
<blockquote>
<blockquote>
<pre><code>Therefor we are curious whether a bird3 package update will
interrupt packet forwarding on a BIRD3 BGP router?</code></pre>
<p>The package update does not restart BIRD by itself. One must do it
manually or scripted themselves.</p>
</blockquote>
<p>We updated bird3 now and bird got restarted automatically in this
process (which is the usual behavior for debian package updates
unrelated to bird).</p>
</blockquote>
<p>In my case it stayed untouched. I’m running Debian 13 Trixie, was
updating from 3.1.4 to 3.2.0, and the bird version shown by the CLI was
still 3.1.4 until I restarted it manually 5 minutes later.</p>
<blockquote>
<p>At the same time in the log shows the restart without manually
triggering it:</p>
<p>Jan 05 11:51:47 Stopping bird.service - BIRD Internet Routing Daemon…
Jan 05 11:51:52 bird.service: Deactivated successfully. Jan 05 11:51:52
Stopped bird.service - BIRD Internet Routing Daemon. Jan 05 11:51:52
bird.service: Consumed 49min 40.707s CPU time, 1.3G memory peak. Jan 05
11:51:52 Starting bird.service - BIRD Internet Routing Daemon… Jan 05
11:51:52 Started bird.service - BIRD Internet Routing Daemon.</p>
</blockquote>
<p>That’s weird. I have no idea how this happened to you. We don’t
request for the restart anywhere. Will run tests and check whether we
can replicate this behavior on our side.</p>
<blockquote>
<blockquote>
<p>I have no idea whether systemd could execute different variants of
restart and shutdown, but if it is possible to do so, we might extend
our service file in order to execute the restart/shutdown gracefully,
regularly or by killing the daemon.</p>
<p>Or set the behavior by an env var? What do you think?</p>
</blockquote>
<p>Since the package update automatically restarts the bird systemd
service I guess this is what people are used to already so it might be
hard to change that?</p>
</blockquote>
<p>Autorestart is wrong by itself imho. If nothing else, APT should at
least <em>ask</em>, not restart on update. One could get disconnected by
autorestarting BIRD.</p>
<p>Maria</p>
<p>–<br />
Maria Matejka (she/her) | BIRD Team Leader | CZ.NIC, z.s.p.o.</p>
</body>
</html>