Files
2025/share/doc/seiscomp/html/base/tutorials/upgrading.html

762 lines
54 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Upgrading SeisComP &#8212; SeisComP Release documentation</title>
<link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../../_static/seiscomp.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css?v=72bcf2f2" />
<link rel="stylesheet" type="text/css" href="../../_static/seiscomp.css?v=c6da7ce6" />
<link rel="stylesheet" type="text/css" href="../../_static/graphviz.css?v=eafc0fe6" />
<script type="text/javascript" src="../../_static/seiscomp.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js?v=823bb831"></script>
<script src="../../_static/doctools.js?v=888ff710"></script>
<script src="../../_static/sphinx_highlight.js?v=4825356b"></script>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Add a new station" href="addstation.html" />
<link rel="prev" title="Installation on Ubuntu" href="postinstall.html" />
</head>
<body>
<div class="header">
<div class="container">
<div class="brand">
<img class="logo" src="../../_static/brands/seiscomp/text/white.svg"/>
<!-- span class="title">SeisComP Release</span -->
<span class="version">6.9.0</span>
</div>
</div>
</div>
<div class="nav">
<div class="container">
<div class="content"><a class="pull-right" id="sidebar-toggle">TOC</a>
<div class="related" role="navigation" aria-label="related navigation">
<ul>
<li class="right">
<a href="../../genindex.html" title="General Index"
accesskey="I">
index
</a>
</li>
<li class="right">
<a href="addstation.html" title="Add a new station"
accesskey="N">
next
</a>
</li>
<li class="right">
<a href="postinstall.html" title="Installation on Ubuntu"
accesskey="P">
previous
</a>
</li>
<li class="nav-item nav-item-0">
<a href="../../index.html">Home</a>
</li>
<li class="nav-item nav-item-1">
<a href="../tutorials.html" accesskey="U">Tutorials</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="container">
<div class="fitted content" id="anchors-container">
<div class="body" role="main">
<section id="upgrading-seiscomp">
<span id="tutorials-upgrade"></span><h1>Upgrading SeisComP<a class="headerlink" href="#upgrading-seiscomp" title="Permalink to this heading"></a></h1>
<p>You will …</p>
<ul class="simple">
<li><p>Upgrade a SeisComP system</p></li>
<li><p>Migrate a SeisComP3 system to a newer SeisComP version</p></li>
</ul>
<p>Pre-requisites for this tutorial:</p>
<ul class="simple">
<li><p>Tutorial on <a class="reference internal" href="postinstall.html#tutorials-postinstall"><span class="std std-ref">installation</span></a> and SeisComP previously installed</p></li>
</ul>
<p>Afterwards/Results/Outcomes:</p>
<ul class="simple">
<li><p>Upgraded SeisComP</p></li>
</ul>
<p>Time range estimate:</p>
<ul class="simple">
<li><p>60 minutes</p></li>
</ul>
<hr class="docutils" />
<section id="background">
<h2>Background<a class="headerlink" href="#background" title="Permalink to this heading"></a></h2>
<p>Installing a new SeisComP <a class="reference internal" href="#tutorials-upgrade-versions"><span class="std std-ref">release version</span></a>
is typically simple and the step described in <a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Normal Upgrade</span></a>
can be applied. <strong>More actions</strong> are required when</p>
<ul class="simple">
<li><p>Upgrading the major version of SeisComP as described in <a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Normal Upgrade</span></a>.</p></li>
<li><p>Upgrading <a class="reference internal" href="#tutorials-upgrade-v4"><span class="std std-ref">from SeisComP3 to SeisComP in version 4.0.0. or higher</span></a>.</p></li>
<li><p>Upgrading <a class="reference internal" href="#tutorials-upgrade-seedlink"><span class="std std-ref">from SeisComP3 Jakarta-2018.327 or older to Jakarta-2020.330 or
SeisComP in version 4 or higher</span></a>.</p></li>
</ul>
<section id="seiscomp-versions">
<span id="tutorials-upgrade-versions"></span><h3>SeisComP versions<a class="headerlink" href="#seiscomp-versions" title="Permalink to this heading"></a></h3>
<p>SeisComP has <a class="reference internal" href="../history.html#history"><span class="std std-ref">developed over time</span></a>. The versions can be distinguished
by the name of the release:</p>
<ul>
<li><p><strong>SeisComP since version 4.0.0</strong> uses release version numbers such as <em>5.2.1</em>
where</p>
<ul class="simple">
<li><p>5: major version with changes in API and database schema version, new features,
bug fixed, optimizations,</p></li>
<li><p>2: minor version with new features, bug fixed, optimizations,</p></li>
<li><p>1: patch number with bug fixes, optimizations.</p></li>
</ul>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>When increasing the major version number, an upgrade of
the database is required.</p>
</div>
</li>
<li><p><strong>SeisComP3</strong> uses release versions, names, numbers and patch numbers.</p>
<p>Full example: <em>SeisComP3-jakarta-2020.330.02</em></p>
<ul class="simple">
<li><p>3: release version</p></li>
<li><p>jakarta: release name</p></li>
<li><p>2020.330: release number</p></li>
<li><p>02: patch number</p></li>
</ul>
<p>Names are adjusted depending on changes in source code:</p>
<ul class="simple">
<li><p><strong>Release version:</strong> major changes in module groups, functionality, concepts, data model.
Example: SeisComp3 is SeisComP in version 3.0
in comparison to version 2.5 the GUIs were introduced.</p></li>
<li><p><strong>Release name:</strong> major changes in functionality, concepts, data model.
Example: with SeisComP3-Seattle the new user friendly configuration GUI <a class="reference internal" href="../../apps/scconfig.html#scconfig"><span class="std std-ref">scconfig</span></a>
was introduced.</p></li>
<li><p><strong>Release number:</strong> changes in data model version and/or major changes in applications and optimizations.
The numbers include the year and the day of the year of the software release.
Example: Jakarta-2018.327</p></li>
<li><p><strong>Patch number:</strong> optimizations of applications without changes in the data model version.</p></li>
</ul>
</li>
</ul>
</section>
<section id="upgrade-seiscomp-on-multiple-machines">
<h3>Upgrade SeisComP on multiple machines<a class="headerlink" href="#upgrade-seiscomp-on-multiple-machines" title="Permalink to this heading"></a></h3>
<p>Applications can only connect to a messaging system that runs with a database
in an equal or lower data base schema version. In distributed <cite>SeisComP</cite> systems
one machine host the messaging system and the database and all other machines
are connected to this messaging or are running independently, the <cite>SeisComP</cite>
installation on the machine operating the messaging is always updated last.</p>
<p><strong>Example:</strong> A distributed system includes a processing system with the
messaging system and database and a GUI work station connected to the processing
system:</p>
<ol class="arabic simple">
<li><p>Upgrade the GUI work station</p></li>
<li><p>Upgrade the processing system, take actions to
<a class="reference internal" href="#tutorials-upgrade-db"><span class="std std-ref">upgrade the database version</span></a>.</p></li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Always stop all SeisComP modules before upgrading:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>stop
</pre></div>
</div>
</div>
</section>
</section>
<section id="package-download">
<span id="tutorials-upgrade-download"></span><h2>Package Download<a class="headerlink" href="#package-download" title="Permalink to this heading"></a></h2>
<p>Get the SeisComP package in the latest version or older ones from gempa GmbH or
from the download website of <span id="id1">Helmholtz-Centre Potsdam - GFZ German Research Centre for Geosciences and gempa GmbH [<a class="reference internal" href="../references.html#id257" title="Helmholtz-Centre Potsdam - GFZ German Research Centre for Geosciences and gempa GmbH. The SeisComP seismological software package. GFZ Data Services. 2008. URL: https://www.seiscomp.de, doi:10.5880/GFZ.2.4.2020.003.">67</a>]</span>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>gempa provides <span id="id2"><em>gsm - gempa software management tool</em> [<a class="reference internal" href="../references.html#id129" title="gsm - gempa software management tool. gempa solution. URL: https://data.gempa.de/packages/Public/gsm/.">29</a>]</span> for convenient and consistent download and
installation of SeisComP and other packages.</p>
</div>
</section>
<section id="documentation-of-changes">
<span id="tutorials-upgrade-changelog"></span><h2>Documentation of Changes<a class="headerlink" href="#documentation-of-changes" title="Permalink to this heading"></a></h2>
<p>The important novelties, optimizations and changes that are available after upgrading
are documented in the change log which can be read
<a class="reference external" href="https://www.seiscomp.de/doc/base/changelog.html">online</a>.
It is recommend to read the change log before taking further actions.</p>
<p>The details can also be found locally in the file</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span><span class="nv">$SEISCOMP_ROOT</span>/share/doc/seiscomp/CHANGELOG
</pre></div>
</div>
<p>which is integrated in the <a class="reference internal" href="../changelog.html#sc-changelog"><span class="std std-ref">documentation</span></a> or accessible
from the <em>Docs</em> panel in <a class="reference internal" href="../../apps/scconfig.html#scconfig"><span class="std std-ref">scconfig</span></a>.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>New features are regularly advertised and described in detail on the
<a class="reference external" href="https://www.gempa.de/news/">News website of gempa GmbH</a> and on the
<span id="id3"><em>SeisComP forum</em> [<a class="reference internal" href="../references.html#id256" title="SeisComP forum. GFZ. URL: https://forum.seiscomp.de/.">24</a>]</span>.</p>
</div>
</section>
<section id="normal-upgrade">
<span id="tutorials-upgrade-normal"></span><h2>Normal Upgrade<a class="headerlink" href="#normal-upgrade" title="Permalink to this heading"></a></h2>
<p>The normal upgrade including upgrading the major version of SeisComP takes only
a few steps:</p>
<ol class="arabic">
<li><p><a class="reference internal" href="#tutorials-upgrade-download"><span class="std std-ref">Download</span></a> the SeisComP package.</p></li>
<li><p>Stop all SeisComP modules:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>stop
</pre></div>
</div>
</li>
<li><p>Install the new packages.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Users of external, e.g., <cite>gempa</cite> modules must ensure that these external
modules match the SeisComP release version if they depend on SeisComP
libraries.</p>
</div>
</li>
<li><p>Test the database schema version and update bindings</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>update-config
</pre></div>
</div>
<p><a class="reference internal" href="#tutorials-upgrade-db"><span class="std std-ref">Upgrade the database schema version</span></a> if
mismatches are reported.</p>
</li>
<li><p>After a successful upgrade, start all modules again and observe the status:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>start
seiscomp<span class="w"> </span>status<span class="w"> </span>started
</pre></div>
</div>
</li>
</ol>
</section>
<section id="upgrade-database-schema-version">
<span id="tutorials-upgrade-db"></span><h2>Upgrade database schema version<a class="headerlink" href="#upgrade-database-schema-version" title="Permalink to this heading"></a></h2>
<p>When installing a new SeisComP release with a higher major version number,
upgrading the database may be required. The database version will be tested and
the required actions will be shown when executing:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>update-config
</pre></div>
</div>
<p>or when pressing the Update Configuration button in scconfig.
An upgrade from version SeisComP3 jakarta-2017.334 to SeisComP in version 5.1.0
will give, e.g.:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>update-config
*<span class="w"> </span>starting<span class="w"> </span>kernel<span class="w"> </span>modules
starting<span class="w"> </span>scmaster
*<span class="w"> </span>configure<span class="w"> </span>kernel
*<span class="w"> </span>configure<span class="w"> </span>scmaster
INFO:<span class="w"> </span>checking<span class="w"> </span>DB<span class="w"> </span>schema<span class="w"> </span>version<span class="w"> </span>of<span class="w"> </span>queue:<span class="w"> </span>production
<span class="w"> </span>*<span class="w"> </span>check<span class="w"> </span>database<span class="w"> </span>write<span class="w"> </span>access<span class="w"> </span>...<span class="w"> </span>OK
<span class="w"> </span>*<span class="w"> </span>database<span class="w"> </span>schema<span class="w"> </span>version<span class="w"> </span>is<span class="w"> </span><span class="m">0</span>.10
<span class="w"> </span>*<span class="w"> </span>last<span class="w"> </span>migration<span class="w"> </span>version<span class="w"> </span>is<span class="w"> </span><span class="m">0</span>.12
<span class="w"> </span>*<span class="w"> </span>migration<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>current<span class="w"> </span>version<span class="w"> </span>is<span class="w"> </span>required.<span class="w"> </span>apply<span class="w"> </span>the<span class="w"> </span>following
<span class="w"> </span>scripts<span class="w"> </span><span class="k">in</span><span class="w"> </span>exactly<span class="w"> </span>the<span class="w"> </span>given<span class="w"> </span>order:
<span class="w"> </span>*<span class="w"> </span>mysql<span class="w"> </span>-u<span class="w"> </span>sysop<span class="w"> </span>-p<span class="w"> </span>-D<span class="w"> </span>seiscomp<span class="w"> </span>-h<span class="w"> </span>localhost<span class="w"> </span>&lt;<span class="w"> </span>/home/sysop/seiscomp/share/db/migrations/mysql/0_10_to_0_11.sql
<span class="w"> </span>*<span class="w"> </span>mysql<span class="w"> </span>-u<span class="w"> </span>sysop<span class="w"> </span>-p<span class="w"> </span>-D<span class="w"> </span>seiscomp<span class="w"> </span>-h<span class="w"> </span>localhost<span class="w"> </span>&lt;<span class="w"> </span>/home/sysop/seiscomp/share/db/migrations/mysql/0_11_to_0_12.sql
error:<span class="w"> </span>updating<span class="w"> </span>configuration<span class="w"> </span><span class="k">for</span><span class="w"> </span>scmaster<span class="w"> </span>failed
</pre></div>
</div>
<p>The shown migration scripts can be used directly as given and in the given order:</p>
<ul>
<li><p>MySQL / MariaDB:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>mysql<span class="w"> </span>-u<span class="w"> </span>sysop<span class="w"> </span>-p<span class="w"> </span>-D<span class="w"> </span>seiscomp<span class="w"> </span>-h<span class="w"> </span>localhost<span class="w"> </span>&lt;<span class="w"> </span>/home/sysop/seiscomp/share/db/migrations/mysql/0_10_to_0_11.sql
mysql<span class="w"> </span>-u<span class="w"> </span>sysop<span class="w"> </span>-p<span class="w"> </span>-D<span class="w"> </span>seiscomp<span class="w"> </span>-h<span class="w"> </span>localhost<span class="w"> </span>&lt;<span class="w"> </span>/home/sysop/seiscomp/share/db/migrations/mysql/0_11_to_0_12.sql
</pre></div>
</div>
</li>
<li><p>PostgreSQL:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>psql<span class="w"> </span>-U<span class="w"> </span>sysop<span class="w"> </span>-d<span class="w"> </span>seiscomp<span class="w"> </span>-h<span class="w"> </span>localhost<span class="w"> </span>-W<span class="w"> </span>-f<span class="w"> </span>/home/sysop/seiscomp/share/db/migrations/postgresql/0_10_to_0_11.sql
psql<span class="w"> </span>-U<span class="w"> </span>sysop<span class="w"> </span>-d<span class="w"> </span>seiscomp<span class="w"> </span>-h<span class="w"> </span>localhost<span class="w"> </span>-W<span class="w"> </span>-f<span class="w"> </span>/home/sysop/seiscomp/share/db/migrations/postgresql/0_11_to_0_12.sql
</pre></div>
</div>
</li>
</ul>
<p>Using the migration scripts provides a more user friendly way than copying the
lines of MySQL code from the changelog. In future versions we might add the option
to automatically run the migrations.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Upgrading the database make take some time. Do no interrupt the process!
During this time, the <cite>SeisComP</cite> messaging system is unavailable causing a downtime of the system.</p>
</div>
<p>After applying the migration scripts the database should be at the correct version.
Test again with:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>update-config
</pre></div>
</div>
<p>After successfully upgrading the database continue your previous upgrade procedure.</p>
</section>
<section id="seiscomp3-to-version-4">
<span id="tutorials-upgrade-v4"></span><h2>SeisComP3 to version &gt;=4<a class="headerlink" href="#seiscomp3-to-version-4" title="Permalink to this heading"></a></h2>
<p>SeisComP in version 4 has some major differences to SeisComP3 which require adjustments.
The main differences are in the <a class="reference internal" href="#sec-tutorials-upgrading-path"><span class="std std-ref">directories of the SeisComP installation</span></a>
and the <a class="reference internal" href="#sec-tutorials-upgrading-messaging"><span class="std std-ref">messaging system</span></a>.
The changes and the required actions are explained below. They must be considered
in addition to the steps set out in section <a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Normal Upgrade</span></a>.</p>
<section id="files-and-directories">
<span id="sec-tutorials-upgrading-path"></span><h3>Files and directories<a class="headerlink" href="#files-and-directories" title="Permalink to this heading"></a></h3>
<p>With <strong>SeisComP3</strong> all the default installation typically required all modules and configurations
in the directories</p>
<ul class="simple">
<li><p>seiscomp3/ , typically $HOME/seiscomp3 or /opt/seiscomp3/</p></li>
<li><p>$HOME/.seiscomp3/</p></li>
</ul>
<p>As of <strong>SeisComP in version 4</strong> the directories are:</p>
<ul class="simple">
<li><p>seiscomp/ , typically $HOME/seiscomp/ or /opt/seiscomp/</p></li>
<li><p>$HOME/.seiscomp/</p></li>
</ul>
<p><strong>All configuration files</strong> must be migrated to the new structures. This
includes:</p>
<ul>
<li><p>Configurations and inventory in seiscomp3/:</p>
<ul class="simple">
<li><p>seiscomp3/etc/*.cfg</p></li>
<li><p>seiscomp3/etc/inventory/</p></li>
<li><p>seiscomp3/etc/keys/</p></li>
</ul>
</li>
<li><p>Configurations in $HOME/.seiscomp3/</p></li>
<li><p>Logs in $HOME/.seiscomp3/log (optional)</p></li>
<li><p>All user-defined files and directories in seiscomp3/share/</p></li>
<li><p>All user-defined <a class="reference internal" href="../../apps/seedlink.html#seedlink"><span class="std std-ref">seedlink</span></a> and other templates in seiscomp3/share/templates/</p></li>
<li><p>The waveform archive and other archives typically in seiscomp3/var/lib/</p></li>
<li><p>User-defined files and directories in other places.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>Some configuration default and description files have changed. Spread, arclink
and arclinkproxy are not part of <cite>SeisComP</cite> anymore. <strong>Therefore, do not migrate:</strong></p>
<ul>
<li><p>any default configuration, description and init files. Better enable the desired
daemon modules again:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp/bin/seiscomp<span class="w"> </span><span class="nb">enable</span><span class="w"> </span><span class="o">[</span>module<span class="o">]</span>
</pre></div>
</div>
</li>
<li><p>any file related to spread or the arclink and arclinkproxy servers.</p></li>
</ul>
</div>
</li>
</ul>
<p>Configurations containing absolute paths, e.g. <code class="file docutils literal notranslate"><span class="pre">/home/sysop/seiscomp3/share/scautoloc/grid_custom.conf</span></code>,
must be adjusted. Better use <a class="reference internal" href="../concepts/configuration.html#concepts-configuration-variables"><span class="std std-ref">internal SeisComP variables</span></a>
such as <em>&#64;DATADIR&#64;</em> instead of <em>seiscomp3/share</em> or <em>seiscomp/share</em>.</p>
</section>
<section id="software-dependencies">
<h3>Software dependencies<a class="headerlink" href="#software-dependencies" title="Permalink to this heading"></a></h3>
<p>The software dependencies may have changed.
<a class="reference internal" href="../installation.html#software-dependencies"><span class="std std-ref">Install the missing ones</span></a>.</p>
</section>
<section id="system-variables">
<h3>System variables<a class="headerlink" href="#system-variables" title="Permalink to this heading"></a></h3>
<p>The system environment variables must be updated, e.g. in <code class="file docutils literal notranslate"><span class="pre">$HOME/.bashrc</span></code>.
Remove or uncomment the lines <code class="file docutils literal notranslate"><span class="pre">$HOME/.bashrc</span></code> referring to the depreciated SeisComP3
version. Then execute</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp/bin/seiscomp<span class="w"> </span>print<span class="w"> </span>env<span class="w"> </span>&gt;&gt;<span class="w"> </span><span class="nv">$HOME</span>/.bashrc
<span class="nb">source</span><span class="w"> </span><span class="nv">$HOME</span>/.bashrc
</pre></div>
</div>
</section>
<section id="pipelines">
<h3>Pipelines<a class="headerlink" href="#pipelines" title="Permalink to this heading"></a></h3>
<p>When using pipelines or alias modules, create and enable the alias module names again, e.g.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span><span class="nb">alias</span><span class="w"> </span>create<span class="w"> </span><span class="o">[</span>alias<span class="o">]</span><span class="w"> </span><span class="o">[</span>module<span class="o">]</span>
seiscomp<span class="w"> </span><span class="nb">enable</span><span class="w"> </span><span class="o">[</span>alias<span class="o">]</span>
</pre></div>
</div>
<p>Migrate the module and bindings configurations of the alias modules including all related additional files which are referred to
in the configurations.</p>
</section>
<section id="messaging-system">
<span id="sec-tutorials-upgrading-messaging"></span><h3>Messaging system<a class="headerlink" href="#messaging-system" title="Permalink to this heading"></a></h3>
<p>One of the main changes SeisComP3 to SeisComP in version 4.0 is the <a class="reference internal" href="../concepts/messaging.html#concepts-messaging"><span class="std std-ref">messaging system</span></a>.
Spread does not exist anymore and only <a class="reference internal" href="../../apps/scmaster.html#scmaster"><span class="std std-ref">scmaster</span></a> is started initially for
the messaging system. <a class="reference internal" href="../../apps/scmaster.html#scmaster"><span class="std std-ref">scmaster</span></a> allows to operate several queues in parallel with
different databases. This flexibility comes with additional parameters which require
configuration. Migrate the legacy database parameters and configure the new one:</p>
<ol class="arabic">
<li><p>Remove or comment the obsolete <em>dbplugin</em> plugin manually from
<code class="file docutils literal notranslate"><span class="pre">scmaster.cfg</span></code> and <code class="file docutils literal notranslate"><span class="pre">global.cfg</span></code></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># plugins = dbplugin</span>
</pre></div>
</div>
</li>
<li><p>Set up the messaging queues in the configuration of <a class="reference internal" href="../../apps/scmaster.html#scmaster"><span class="std std-ref">scmaster</span></a> in
<code class="file docutils literal notranslate"><span class="pre">scmaster.cfg</span></code>.</p>
<ul>
<li><p>Add and configure a new queue or stay with the default ones.</p>
<ul class="simple">
<li><p><em>production</em> considers a database by default.</p></li>
<li><p><em>playback</em> considers no database by default. Here, parameters can be
exchanged through the messaging without storing in the database.</p></li>
</ul>
<p>In the following examples, the <em>production</em> queue shall be assumed.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The <em>production</em> queue is used by default by all modules connected
to the messaging system. When removing this queue and a database shall be
used, another queue must exist
and the queue name must be configured for all modules in the global
<a class="reference internal" href="../../apps/global.html#confval-connection.server"><code class="xref std std-confval docutils literal notranslate"><span class="pre">connection.server</span></code></a> parameter. See below for an example.</p>
</div>
<ul>
<li><p>Add the required plugins per queue. Currently only <em>dbstore</em> is supported.
Example for the <em>production</em> queue:</p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">queues.production.plugins</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">dbstore</span>
</pre></div>
</div>
</li>
<li><p>Add non-default message groups, e.g. <em>L1PICK</em> and <em>L1LOCATION</em> to the list
of groups <strong>in one of the ways</strong>:</p>
<ul>
<li><p><strong>Recommended:</strong> Add groups per queues to defaults in
<a class="reference internal" href="../../apps/scmaster.html#confval-queues.-name.groups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">queues.$name.groups</span></code></a>, e.g. for the <em>production</em> group.
This convenient configuration per queue
considers the default groups in <a class="reference internal" href="../../apps/scmaster.html#confval-defaultGroups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">defaultGroups</span></code></a> and simply adds
new groups in the configuration of queues</p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">queues.production.groups</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">${defaultGroups}, L1PICK, L1LOCATION</span>
</pre></div>
</div>
</li>
<li><p>Set groups per queue in <a class="reference internal" href="../../apps/scmaster.html#confval-queues.-name.groups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">queues.$name.groups</span></code></a>,
ignoring groups in <a class="reference internal" href="../../apps/scmaster.html#confval-defaultGroups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">defaultGroups</span></code></a></p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">queues.production.groups</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">L1PICK, L1LOCATION, AMPLITUDE, PICK, LOCATION, MAGNITUDE, FOCMECH, EVENT, QC, PUBLICATION, GUI, INVENTORY, ROUTING, CONFIG, LOGGING, IMPORT_GROUP, SERVICE_REQUEST, SERVICE_PROVIDE</span>
</pre></div>
</div>
</li>
<li><p>Set groups in <a class="reference internal" href="../../apps/scmaster.html#confval-defaultGroups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">defaultGroups</span></code></a></p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">defaultGroups</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">L1PICK, L1LOCATION, AMPLITUDE, PICK, LOCATION, MAGNITUDE, FOCMECH, EVENT, QC, PUBLICATION, GUI, INVENTORY, ROUTING, CONFIG, LOGGING, IMPORT_GROUP, SERVICE_REQUEST, SERVICE_PROVIDE</span>
</pre></div>
</div>
</li>
</ul>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>When setting groups in the queues all groups configured in
<a class="reference internal" href="../../apps/scmaster.html#confval-defaultGroups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">defaultGroups</span></code></a> will be ignored unless <cite>${defaultGroups}</cite> is used.
Add all groups from <a class="reference internal" href="../../apps/scmaster.html#confval-defaultGroups"><code class="xref std std-confval docutils literal notranslate"><span class="pre">defaultGroups</span></code></a> to the queues to keep the
default groups.</p>
</div>
</li>
<li><p>Add the interface name, currently only <em>dbstore</em> is supported. Example for
a queue names <em>production</em></p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">queues.production.processors.messages</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">dbstore</span>
</pre></div>
</div>
</li>
<li><p>Add the database parameters which can be used from the legacy configuration</p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">queues.production.processors.messages.dbstore.driver</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">mysql</span>
<span class="na">queues.production.processors.messages.dbstore.read</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">sysop:sysop@localhost/seiscomp3</span>
<span class="na">queues.production.processors.messages.dbstore.write</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">sysop:sysop@localhost/seiscomp3</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The name of the database can be freely chosen. The example assumes that
the database named <em>seiscomp3</em> exists already and that it shall be continued
to be used with the new SeisComP in version 4.x.x.</p>
</div>
</li>
</ul>
</li>
<li><p>Add one or more of the queues to the <a class="reference internal" href="../../apps/scmaster.html#confval-queues"><code class="xref std std-confval docutils literal notranslate"><span class="pre">queues</span></code></a> parameter to register
them by their names</p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">queues</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">production, playback</span>
</pre></div>
</div>
</li>
</ul>
</li>
<li><p>Configure the connection parameters of all modules connecting to the messaging
system in the global configuration, e.g. in <code class="file docutils literal notranslate"><span class="pre">global.cfg</span></code>.
As in SeisComP3 the connection server is
localhost. The queue name is added to the host by “/”. The default queue
is <em>production</em>, e.g.</p>
<div class="highlight-properties notranslate"><div class="highlight"><pre><span></span><span class="na">connection.server</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">localhost/production</span>
</pre></div>
</div>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>If <em>production</em> shall be used, then no additional configuration is required.</p>
</div>
</li>
</ol>
</section>
<section id="database">
<h3>Database<a class="headerlink" href="#database" title="Permalink to this heading"></a></h3>
<p>After adjusting the structure, variables and configuration parameters, check if the
<a class="reference internal" href="#tutorials-upgrade-db"><span class="std std-ref">database requires an upgrade</span></a> as well.</p>
</section>
<section id="seedlink">
<h3>Seedlink<a class="headerlink" href="#seedlink" title="Permalink to this heading"></a></h3>
<p>When upgrading from SeisComp3 Jakrata-2018.327 or older and using <a class="reference internal" href="../../apps/seedlink.html#seedlink"><span class="std std-ref">seedlink</span></a>,
consider the sections <a class="reference internal" href="#tutorials-upgrade-seedlink"><span class="std std-ref">SeedLink buffer</span></a> and
<a class="reference internal" href="#tutorials-proc-seedlink"><span class="std std-ref">SeedLink stream processor</span></a>.</p>
</section>
<section id="automatic-module-check">
<h3>Automatic module check<a class="headerlink" href="#automatic-module-check" title="Permalink to this heading"></a></h3>
<p>If applied, adjust the settings for automatic module status check, e.g. crontab entries.
For crontab use:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>crontab<span class="w"> </span>-e
</pre></div>
</div>
</section>
<section id="system-daemon">
<h3>System daemon<a class="headerlink" href="#system-daemon" title="Permalink to this heading"></a></h3>
<p>If <cite>SeisComP</cite> is controlled by the system daemon, e.g. to start enabled <cite>SeisComP</cite>
modules automatically during computer startup, then the startup script must be
adjusted.</p>
</section>
</section>
<section id="upgrade-from-seiscomp3-jakarta-2018-327-or-before">
<h2>Upgrade From SeisComP3 Jakarta-2018.327 or Before<a class="headerlink" href="#upgrade-from-seiscomp3-jakarta-2018-327-or-before" title="Permalink to this heading"></a></h2>
<section id="seedlink-buffer">
<span id="tutorials-upgrade-seedlink"></span><h3>SeedLink buffer<a class="headerlink" href="#seedlink-buffer" title="Permalink to this heading"></a></h3>
<p>In SeisComP3 prior to Jakarta-2020.330 two stations with the same
station but different network code were mixed in one buffer directory.
As of Jakarta-2020.330 and SeisComP in version 4 the buffer directories are now
unique!
Before upgrading <a class="reference internal" href="../../apps/seedlink.html#seedlink"><span class="std std-ref">seedlink</span></a>, you should therefore rename the buffer directories
accordingly.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>You may discover data gaps if you do not rename the buffer directories.</p>
</div>
<p><strong>Example:</strong></p>
<ol class="arabic">
<li><p>Check the current situation:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sysop@host:~/seiscomp3/var/lib/seedlink/buffer$<span class="w"> </span>ls
<span class="w"> </span>PB02
</pre></div>
</div>
</li>
<li><p>Rename the directories properly:</p>
<ol class="arabic">
<li><p>Stop seedlink:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>sysop@host:seiscomp<span class="w"> </span>stop<span class="w"> </span>seedlink
</pre></div>
</div>
</li>
<li><p>Upgrade to SeisComP3-jakarta-2020.330 or SeisComP in version 4 or higher.</p></li>
<li><p>Rename all seedlink buffer directories to NET.STA, e.g.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sysop@host:~/seiscomp3/var/lib/seedlink/buffer$<span class="w"> </span>mv<span class="w"> </span>PB02<span class="w"> </span>CX.PB02
sysop@host:~/seiscomp3/var/lib/seedlink/buffer$<span class="w"> </span>ls
<span class="w"> </span>CX.PB02
</pre></div>
</div>
</li>
<li><p>Update configuration:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sysop@host:seiscomp<span class="w"> </span>update-config
</pre></div>
</div>
</li>
<li><p>Start SeedLink</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>sysop@host:seiscomp<span class="w"> </span>start<span class="w"> </span>seedlink
</pre></div>
</div>
</li>
</ol>
</li>
</ol>
<p id="seedlink-buffer-script">Script for renaming the seedlink buffer directories:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
<span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-z<span class="w"> </span><span class="si">${</span><span class="nv">SEISCOMP_ROOT</span><span class="p">+x</span><span class="si">}</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;Environment variable SEISCOMP_ROOT is not set.&quot;</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;Either use &#39;seiscomp exec [script]&#39; or set SEISCOMP_ROOT to the installation &quot;</span>
<span class="w"> </span><span class="nb">exit</span><span class="w"> </span><span class="m">1</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;path of your SeisComP installation.&quot;</span>
<span class="k">fi</span>
grep<span class="w"> </span>-A<span class="w"> </span><span class="m">2</span><span class="w"> </span>^station<span class="w"> </span><span class="nv">$SEISCOMP_ROOT</span>/var/lib/seedlink/seedlink.ini<span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="nb">read</span><span class="w"> </span>a<span class="w"> </span>b<span class="w"> </span>c<span class="p">;</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$a</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">=</span><span class="w"> </span>station<span class="w"> </span>-a<span class="w"> </span><span class="s2">&quot;</span><span class="nv">$b</span><span class="s2">&quot;</span><span class="w"> </span>!<span class="o">=</span><span class="w"> </span>.dummy<span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nv">id</span><span class="o">=</span><span class="nv">$b</span>
<span class="w"> </span><span class="nv">sta</span><span class="o">=</span><span class="s2">&quot;&quot;</span>
<span class="w"> </span><span class="nv">net</span><span class="o">=</span><span class="s2">&quot;&quot;</span>
<span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="nb">read</span><span class="w"> </span>a<span class="w"> </span>b<span class="w"> </span>c<span class="p">;</span><span class="w"> </span><span class="k">do</span>
<span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="nv">$a</span><span class="w"> </span><span class="k">in</span>
<span class="w"> </span>--<span class="o">)</span><span class="w"> </span><span class="k">break</span><span class="p">;;</span>
<span class="w"> </span>name<span class="o">)</span><span class="w"> </span><span class="nb">eval</span><span class="w"> </span><span class="nv">sta</span><span class="o">=</span><span class="nv">$c</span><span class="p">;;</span>
<span class="w"> </span>network<span class="o">)</span><span class="w"> </span><span class="nb">eval</span><span class="w"> </span><span class="nv">net</span><span class="o">=</span><span class="nv">$c</span><span class="p">;;</span>
<span class="w"> </span><span class="k">esac</span>
<span class="w"> </span><span class="k">done</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span>-z<span class="w"> </span><span class="s2">&quot;</span><span class="nv">$id</span><span class="s2">&quot;</span><span class="w"> </span>-o<span class="w"> </span>-z<span class="w"> </span><span class="s2">&quot;</span><span class="nv">$sta</span><span class="s2">&quot;</span><span class="w"> </span>-o<span class="w"> </span>-z<span class="w"> </span><span class="s2">&quot;</span><span class="nv">$net</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;Error parsing seedlink.ini&quot;</span>
<span class="w"> </span><span class="k">break</span>
<span class="w"> </span><span class="k">fi</span>
<span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="o">[</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$id</span><span class="s2">&quot;</span><span class="w"> </span>!<span class="o">=</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$net</span><span class="s2">.</span><span class="nv">$sta</span><span class="s2">&quot;</span><span class="w"> </span><span class="o">]</span><span class="p">;</span><span class="w"> </span><span class="k">then</span>
<span class="w"> </span>mv<span class="w"> </span>-v<span class="w"> </span><span class="s2">&quot;</span><span class="nv">$SEISCOMP_ROOT</span><span class="s2">/var/lib/seedlink/buffer/</span><span class="nv">$id</span><span class="s2">&quot;</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$SEISCOMP_ROOT</span><span class="s2">/var/lib/seedlink/buffer/</span><span class="nv">$net</span><span class="s2">.</span><span class="nv">$sta</span><span class="s2">&quot;</span>
<span class="w"> </span><span class="k">else</span>
<span class="w"> </span><span class="nb">echo</span><span class="w"> </span><span class="s2">&quot;</span><span class="nv">$id</span><span class="s2">: No renaming required&quot;</span>
<span class="w"> </span><span class="k">fi</span>
<span class="w"> </span><span class="k">fi</span>
<span class="k">done</span>
</pre></div>
</div>
</section>
<section id="seedlink-stream-processor">
<span id="tutorials-proc-seedlink"></span><h3>SeedLink stream processor<a class="headerlink" href="#seedlink-stream-processor" title="Permalink to this heading"></a></h3>
<p>Since SeisComP3 in version Jakarta-2020.030 and SeisComP in version 4.0.0,
SeedLink stream processors (<code class="docutils literal notranslate"><span class="pre">proc</span></code> parameter) can be attached to both, stations
and plugin instances. In order to distinguish between the two cases, either
<code class="docutils literal notranslate"><span class="pre">proc</span></code> (attach to station) or <code class="docutils literal notranslate"><span class="pre">sources.*.proc</span></code> (attach to plugin instance)
parameter (or both) can be used in SeedLink bindings.</p>
<section id="chain-plugin">
<h4>chain plugin<a class="headerlink" href="#chain-plugin" title="Permalink to this heading"></a></h4>
<p>In case of the <a class="reference internal" href="../../apps/seedlink.html#seedlink-sources-chain-label"><span class="std std-ref">chain plugin</span></a> for
<a class="reference internal" href="../../apps/seedlink.html#seedlink"><span class="std std-ref">seedlink</span></a>, there is
normally just one instance, so stream processors attached to this instance apply
to all stations. <strong>This is normally not what we want.</strong> Therefore the
chain plugin does not support the <code class="docutils literal notranslate"><span class="pre">sources.*.proc</span></code> option.</p>
<p>Before SeisComP3 in version Jakarta-2020.030 and SeisComP in version 4.0.0,
stream processors were always attached to stations, even when <code class="docutils literal notranslate"><span class="pre">sources.*.proc</span></code>
was used. This means when upgrading:</p>
<ol class="arabic simple">
<li><p><code class="docutils literal notranslate"><span class="pre">sources.chain.proc</span></code> must be renamed to <code class="docutils literal notranslate"><span class="pre">proc</span></code></p></li>
<li><p>streams_*.tpl templates must be moved one level up, from
<code class="file docutils literal notranslate"><span class="pre">$SEISCOMP_ROOT/seiscomp/share/templates/seedlink/chain/</span></code> to
<code class="file docutils literal notranslate"><span class="pre">$SEISCOMP_ROOT/seiscomp/share/templates/seedlink/</span></code>.</p></li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Using a stream processor with chain_plugin makes only sense when raw
data is generated (<a class="reference internal" href="../../apps/seedlink.html#confval-sources.chain.channels.unpack"><code class="xref std std-confval docutils literal notranslate"><span class="pre">sources.chain.channels.unpack</span></code></a>).</p>
</div>
</section>
<section id="id4">
<h4>Background<a class="headerlink" href="#id4" title="Permalink to this heading"></a></h4>
<p>A stream processor is an object defined in XML, which is used to create MiniSEED
from raw data and optionally downsample the data. What is the difference between
attaching a stream processor to station and plugin instance?</p>
<p>Lets take a look at the following stream processor definition in
<code class="file docutils literal notranslate"><span class="pre">$SEISCOMP_ROOT/share/templates/seedlink/streams_stream100.tpl</span></code>:</p>
<div class="highlight-XML notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;proc</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;stream100&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;tree&gt;</span>
<span class="w"> </span><span class="nt">&lt;input</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;Z&quot;</span><span class="w"> </span><span class="na">channel=</span><span class="s">&quot;Z&quot;</span><span class="w"> </span><span class="na">location=</span><span class="s">&quot;&quot;</span><span class="w"> </span><span class="na">rate=</span><span class="s">&quot;100&quot;</span><span class="nt">/&gt;</span>
<span class="w"> </span><span class="nt">&lt;input</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;N&quot;</span><span class="w"> </span><span class="na">channel=</span><span class="s">&quot;N&quot;</span><span class="w"> </span><span class="na">location=</span><span class="s">&quot;&quot;</span><span class="w"> </span><span class="na">rate=</span><span class="s">&quot;100&quot;</span><span class="nt">/&gt;</span>
<span class="w"> </span><span class="nt">&lt;input</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;E&quot;</span><span class="w"> </span><span class="na">channel=</span><span class="s">&quot;E&quot;</span><span class="w"> </span><span class="na">location=</span><span class="s">&quot;&quot;</span><span class="w"> </span><span class="na">rate=</span><span class="s">&quot;100&quot;</span><span class="nt">/&gt;</span>
<span class="w"> </span><span class="nt">&lt;node</span><span class="w"> </span><span class="na">filter=</span><span class="s">&quot;FS2D5&quot;</span><span class="w"> </span><span class="na">stream=</span><span class="s">&quot;BH&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;node</span><span class="w"> </span><span class="na">filter=</span><span class="s">&quot;F96C&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;node</span><span class="w"> </span><span class="na">filter=</span><span class="s">&quot;ULP&quot;</span><span class="w"> </span><span class="na">stream=</span><span class="s">&quot;LH&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;node</span><span class="w"> </span><span class="na">filter=</span><span class="s">&quot;VLP&quot;</span><span class="w"> </span><span class="na">stream=</span><span class="s">&quot;VH&quot;</span><span class="nt">/&gt;</span>
<span class="w"> </span><span class="nt">&lt;/node&gt;</span>
<span class="w"> </span><span class="nt">&lt;/node&gt;</span>
<span class="w"> </span><span class="nt">&lt;/node&gt;</span>
<span class="w"> </span><span class="nt">&lt;/tree&gt;</span>
<span class="nt">&lt;/proc&gt;</span>
</pre></div>
</div>
<p>This creates 20Hz BH*, 1Hz LH* and 0.1Hz VH* streams from 100Hz Z, N, E raw
data. If one plugin instance is used for the station, it does not make a
difference whether this is attached to station or plugin instance. But suppose
the station is using two plugin instances—one for broad-band and the other for
strong-motion data—, both sending Z, N and E channels. Now if the stream processor
is attached to station, data from both plugin instances would mixed up. We must
attach a different stream processor to each plugin instance—one producing BH*,
LH* and VH* and the other one producing BN* and so on.</p>
</section>
</section>
</section>
</section>
<div id="anchors-bottom"></div>
</div>
<div class="sidebar" role="navigation" aria-label="main navigation">
<div id="anchors-top"></div>
<div id="anchors" class="content">
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="../../search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
<div>
<h3><a href="../../index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Upgrading SeisComP</a><ul>
<li><a class="reference internal" href="#background">Background</a><ul>
<li><a class="reference internal" href="#seiscomp-versions">SeisComP versions</a></li>
<li><a class="reference internal" href="#upgrade-seiscomp-on-multiple-machines">Upgrade SeisComP on multiple machines</a></li>
</ul>
</li>
<li><a class="reference internal" href="#package-download">Package Download</a></li>
<li><a class="reference internal" href="#documentation-of-changes">Documentation of Changes</a></li>
<li><a class="reference internal" href="#normal-upgrade">Normal Upgrade</a></li>
<li><a class="reference internal" href="#upgrade-database-schema-version">Upgrade database schema version</a></li>
<li><a class="reference internal" href="#seiscomp3-to-version-4">SeisComP3 to version &gt;=4</a><ul>
<li><a class="reference internal" href="#files-and-directories">Files and directories</a></li>
<li><a class="reference internal" href="#software-dependencies">Software dependencies</a></li>
<li><a class="reference internal" href="#system-variables">System variables</a></li>
<li><a class="reference internal" href="#pipelines">Pipelines</a></li>
<li><a class="reference internal" href="#messaging-system">Messaging system</a></li>
<li><a class="reference internal" href="#database">Database</a></li>
<li><a class="reference internal" href="#seedlink">Seedlink</a></li>
<li><a class="reference internal" href="#automatic-module-check">Automatic module check</a></li>
<li><a class="reference internal" href="#system-daemon">System daemon</a></li>
</ul>
</li>
<li><a class="reference internal" href="#upgrade-from-seiscomp3-jakarta-2018-327-or-before">Upgrade From SeisComP3 Jakarta-2018.327 or Before</a><ul>
<li><a class="reference internal" href="#seedlink-buffer">SeedLink buffer</a></li>
<li><a class="reference internal" href="#seedlink-stream-processor">SeedLink stream processor</a><ul>
<li><a class="reference internal" href="#chain-plugin">chain plugin</a></li>
<li><a class="reference internal" href="#id4">Background</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div>
<h4>Previous topic</h4>
<p class="topless"><a href="postinstall.html"
title="previous chapter">Installation on Ubuntu</a></p>
</div>
<div>
<h4>Next topic</h4>
<p class="topless"><a href="addstation.html"
title="next chapter">Add a new station</a></p>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../../_sources/base/tutorials/upgrading.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<div class="container">
<div class="horizontal layout content">
<a class="fade-in" href="https://www.gempa.de" target="_blank">
<img class="brand" src="../../_static/brands/gempa.svg"/>
</a>
<div class="stretched align-center fitted content">
<div>
Version <b>6.9.0</b> Release
</div>
<div class="copyright">
Copyright &copy; gempa GmbH, GFZ Potsdam.
</div>
</div>
<a class="fade-in" href="https://www.gfz-potsdam.de" target="_blank">
<img class="brand" src="../../_static/brands/gfz.svg"/>
</a>
</div>
</div>
</div>
</body>
</html>