Skip to content

kyle-walker/retrace-server

 
 

Repository files navigation

1. Plugins
==========

Each supported distribution needs to have its proper plugin. The plugin
itself consists of 2 parts:

* plugin file - A python file dropped in /usr/share/retrace-server/plugins
                containing the following elements:

  - distribution: String considered plugin name and identifier.

  - abrtparser:   Parser able to get release from ABRT's os_release file.

  - guessparser:  Parser able to guess release from package's name. Can not
                  be relied on (e.g. el6 does not give enough information).

  - yumcfg:       a string that will be appended to yum config file for all
                  repositories

  - repos:        An array of public repositories and their mirrors.
                  The synchronization is realized using rsync or yum, so
                  repository path is either a directory in the filesystem,
                  rsync:// URL, http:// URL or ftp:// URL. $ARCH and $VER
                  meta-variables are expanded to appropriate strings.
                  The repo is either defined as list of mirrors or
                  a two-member tuple where the first member is the same
                  list of mirrors and second is a part of yum config file
                  that will only be appended to the repo.
                  Example:
                  repos = [
                    [ #repo1
                      /srv/repos/repo1_mirror1,
                      rsync://repo1/mirror2,
                    ],
                    [ #repo2
                      ftp://repo2/repo2_mirror1,
                      /srv/repos/repo2_mirror2,
                    ],
                    [ #repo3
                      rsync://repo3/mirror1,
                    ],
                    ( #repo4
                      [
                        "rsync://repo4/mirror1",
                        "http://repo4/mirror2",
                      ],
                      "gpgcheck = 0", # local yum config
                    ),
                  ]

* GPG keys - Files containig GPG keys to verify downloaded package's signature.
             Dropped in /usr/share/retrace-server/gpg.

2. Repository synchronization
=============================

Since older versions of packages are deleted from public repositories (Fedora),
Retrace server needs to maintain local copies of repositories containing all
versions of all packages. This job is realized by retrace-server-reposync tool
by running 'retrace-server-reposync distribution version architecture' where
'distribution' is a plugin name (see 1. Plugins). The retrace-server-reposync
tool should be set up in retrace's crontab.

3. Garbage collection
=====================

There are 3 types of garbage:

* old tasks - Tasks older than DeleteTaskAfter config option.

* failed tasks - Tasks which made Retrace server crash. This most probably
                 signifies Retrace server application error. These are not
                 tasks finished by FINISHED_FAILURE.

* long running tasks - Task running for > 1 hour. Tasks who got stuck in
                       an endless loop, deadlocks etc. It may happen that
                       if the server is hard loaded, regular tasks do not
                       finish in time, but it is server admin's job to
                       limit task count by setting MaxParallelTasks config
                       option. No real user will wait 1 hour for the backtrace.

The retrace-server-cleanup tool handles all of these types. It should be set up
in apache's crontab (it needs root privileges to clean up mock chroots) to run
every hour.

4. SELinux
==========

At the moment you need to disable SELinux to make Retrace server work properly.
We are working on the policy, however the code changes too quickly to maintain
a long-term working policy.

About

Application for remote coredump analysis

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 92.7%
  • HTML 5.8%
  • Makefile 1.3%
  • Shell 0.2%