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

750 lines
56 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>Updating/Upgrading SeisComP &#8212; SeisComP Development 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=744d344a"></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 Development</span -->
<span class="version">7.0.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="updating-upgrading-seiscomp">
<span id="tutorials-upgrade"></span><h1>Updating/Upgrading SeisComP<a class="headerlink" href="#updating-upgrading-seiscomp" title="Permalink to this heading"></a></h1>
<p>You will …</p>
<ul class="simple">
<li><p>Update/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><a class="reference internal" href="../installation.html#installation"><span class="std std-ref">Documentation of installation</span></a></p></li>
<li><p>Tutorial on <a class="reference internal" href="postinstall.html#tutorials-postinstall"><span class="std std-ref">installation</span></a> and <cite>SeisComP</cite>
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>Updating/upgrading <cite>SeisComP</cite> to a higher
<a class="reference internal" href="../installation.html#installation-versions"><span class="std std-ref">release version</span></a> is typically simple and the
steps described in <a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Normal Update/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 Update/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="upgrade-vs-update">
<h3>Upgrade vs. update<a class="headerlink" href="#upgrade-vs-update" title="Permalink to this heading"></a></h3>
<p>Here we understand that <em>upgrades</em> increase the major release version number
while <em>updates</em> only increase the minor version or the patch number, see section
<a class="reference internal" href="../installation.html#installation-versions"><span class="std std-ref">SeisComP Versions</span></a>.</p>
</section>
<section id="upgrading-multiple-machines">
<h3>Upgrading multiple machines<a class="headerlink" href="#upgrading-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. However, upgrading <cite>SeisComP</cite> to a
higher major release version typically increases the database scheme version.
Therefore, in distributed <cite>SeisComP</cite> systems where one machine hosts the messaging
system and the database and all other machines are connected to this messaging,
the <cite>SeisComP</cite> installation on the machine operating the messaging is always
upgraded 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><a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Upgrade</span></a> the GUI work station</p></li>
<li><p><a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Upgrade</span></a> 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 id="package-download">
<span id="tutorials-upgrade-download"></span><h3>Package download<a class="headerlink" href="#package-download" title="Permalink to this heading"></a></h3>
<p>Get and install the <cite>SeisComP</cite> package in the any available version from
<span id="id1"><em>gempa GmbH</em> [<a class="reference internal" href="../references.html#id147" title="gempa GmbH. The SeisComP development and maintenance company. URL: https://www.gempa.de.">31</a>]</span> or from the download website of <span id="id2">Helmholtz-Centre Potsdam - GFZ German Research Centre for Geosciences and gempa GmbH [<a class="reference internal" href="../references.html#id290" 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.">76</a>]</span> as described
in section <a class="reference internal" href="../installation.html#installation-packages"><span class="std std-ref">Installation of Packages</span></a>.</p>
</section>
<section id="documentation-of-changes">
<span id="tutorials-upgrade-changelog"></span><h3>Documentation of changes<a class="headerlink" href="#documentation-of-changes" title="Permalink to this heading"></a></h3>
<p>The important novelties, optimizations and changes that are available after
upgrading are documented in the Changelog which is part of this documentation
and which can also be accessed through the <em>Docs</em> panel of <a class="reference internal" href="../../apps/scconfig.html#scconfig"><span class="std std-ref">scconfig</span></a>.
The installed locally installed file is
<code class="file docutils literal notranslate"><span class="pre">$SEISCOMP_ROOT/share/doc/seiscomp/CHANGELOG</span></code>
The Changelog can also be read
<a class="reference external" href="https://www.seiscomp.de/doc/base/changelog.html">online</a> but care should be
take that the version number matches your.´</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>New major release with the 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#id289" title="SeisComP forum. GFZ. URL: https://forum.seiscomp.de/.">26</a>]</span>.</p>
</div>
</section>
<section id="upgrade-database-schema-version">
<span id="tutorials-upgrade-db"></span><h3>Upgrade database schema version<a class="headerlink" href="#upgrade-database-schema-version" title="Permalink to this heading"></a></h3>
<p>When upgrading <cite>SeisComP</cite> to a higher major version number as set out in section
<a class="reference internal" href="#tutorials-upgrade-normal"><span class="std std-ref">Normal Update/Upgrade</span></a>, upgrading the database schema is typically
required, too. The database version will be tested and the required actions will
be reported when executing:</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>update-config**Special<span class="w"> </span><span class="k">case</span>:**
</pre></div>
</div>
<p>or when pressing the Update Configuration button in <a class="reference internal" href="../../apps/scconfig.html#scconfig"><span class="std std-ref">scconfig</span></a>.
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>l
</pre></div>
</div>
<dl class="simple">
<dt><a href="#id4"><span class="problematic" id="id5">**</span></a>Special case:<a href="#id6"><span class="problematic" id="id7">**</span></a>ocalhost &lt; /home/sysop/seiscomp/share/db/migrations/mysql/0_11_to_0_12.sql</dt><dd><p>error: updating configuration for scmaster failed</p>
</dd>
</dl>
<p>The shown migration scripts can be used directly as given and in the given
order but you need to first stop all modules writing to or deleting objects from
the database such as <a class="reference internal" href="../../apps/scmaster.html#scmaster"><span class="std std-ref">scmaster</span></a>, <a class="reference internal" href="../../apps/scdb.html#scdb"><span class="std std-ref">scdb</span></a>, <a class="reference internal" href="../../apps/scardac.html#scardac"><span class="std std-ref">scardac</span></a> or
<a class="reference internal" href="../../apps/scdbstrip.html#scdbstrip"><span class="std std-ref">scdbstrip</span></a> running on the same or any connected machine, e.g.</p>
<div class="highlight-sh notranslate"><div class="highlight"><pre><span></span>seiscomp<span class="w"> </span>stop<span class="w"> </span>scmaster
</pre></div>
</div>
<p><strong>Special case:</strong>
Thereafter, apply the migration according to your database:</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 which was practise in past SeisComP3
versions. 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>
<section id="normal-update-upgrade">
<span id="tutorials-upgrade-normal"></span><h2>Normal Update/Upgrade<a class="headerlink" href="#normal-update-upgrade" title="Permalink to this heading"></a></h2>
<p>Normal updates/upgrades of the major version of <cite>SeisComP</cite> takes only a few steps:</p>
<ol class="arabic">
<li><p>If you are tracking your <cite>SeisComP</cite> installation using <strong class="program">git</strong>
(recommended), ensure all previous changes are committed and the installation
is clean.</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>Download and install the <cite>SeisComP</cite> package as described in section
<a class="reference internal" href="../installation.html#installation-packages"><span class="std std-ref">Installation of Packages</span></a>.</p></li>
<li><p>Understand the Changelog of the installed <cite>SeisComP</cite> as described in section
<a class="reference internal" href="#tutorials-upgrade-changelog"><span class="std std-ref">Documentation of changes</span></a>.</p></li>
<li><p>Infrequently configuration parameters require changes which
are documented in the Changelog. You may also scan your configuration for
deprecated or obsolete configuration parameters or values using
<a class="reference external" href="https://data.gempa.de/packages/Public/tools/">gempa-checkSCconfig.py</a>
provided by <span id="id8"><em>gempa GmbH</em> [<a class="reference internal" href="../references.html#id147" title="gempa GmbH. The SeisComP development and maintenance company. URL: https://www.gempa.de.">31</a>]</span>. Apply changes accordingly.</p></li>
<li><p>The software dependencies may have changed after upgrading. Install them as
described in section <a class="reference internal" href="../installation.html#software-dependencies"><span class="std std-ref">Software Dependencies</span></a>.</p></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. The mismatch reports will also give the upgrade
instructions. Repeat <em>seiscomp update-config</em> after upgrading the database
schema version.</p>
<p><strong>Background:</strong> When upgrading the major <cite>SeisComP</cite> version you
typically need to upgrade the database scheme version.</p>
</li>
<li><p>After a successful update/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>
<li><p>If you are tracking your <cite>SeisComP</cite> installation using <strong class="program">git</strong>
(recommended), commit all changes.</p></li>
</ol>
</section>
<section id="upgrading-from-seiscomp3">
<span id="tutorials-upgrade-v4"></span><h2>Upgrading from SeisComP3<a class="headerlink" href="#upgrading-from-seiscomp3" title="Permalink to this heading"></a></h2>
<p>SeisComP in version &gt;=4 has 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 Update/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><strong>Special case:</strong> 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><strong>Special case:</strong> 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 in version 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 section <a class="reference internal" href="#tutorials-upgrade-2018-327"><span class="std std-ref">Upgrading From SeisComP3 &lt;= Jakarta-2018.327</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="upgrading-from-seiscomp3-jakarta-2018-327">
<span id="tutorials-upgrade-2018-327"></span><h2>Upgrading From SeisComP3 &lt;= Jakarta-2018.327<a class="headerlink" href="#upgrading-from-seiscomp3-jakarta-2018-327" 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>tutorials_upgrade_seedlink
<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="id9">
<h4>Background<a class="headerlink" href="#id9" 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="#">Updating/Upgrading SeisComP</a><ul>
<li><a class="reference internal" href="#background">Background</a><ul>
<li><a class="reference internal" href="#upgrade-vs-update">Upgrade vs. update</a></li>
<li><a class="reference internal" href="#upgrading-multiple-machines">Upgrading multiple machines</a></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="#upgrade-database-schema-version">Upgrade database schema version</a></li>
</ul>
</li>
<li><a class="reference internal" href="#normal-update-upgrade">Normal Update/Upgrade</a></li>
<li><a class="reference internal" href="#upgrading-from-seiscomp3">Upgrading from SeisComP3</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="#upgrading-from-seiscomp3-jakarta-2018-327">Upgrading From SeisComP3 &lt;= Jakarta-2018.327</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="#id9">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>7.0.0</b> Development
</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>