Skip to content

Commit 9c62d73

Browse files
committed
Add columns for common arguments, descriptions
1 parent c4dda16 commit 9c62d73

File tree

1 file changed

+88
-40
lines changed

1 file changed

+88
-40
lines changed

docs/started/main_components/daemons.md

Lines changed: 88 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -10,47 +10,47 @@ and then write some data back into the DB.
1010

1111
Usually one daemon will create some work for another daemon and vice-versa.
1212
In Rucio realm, daemons communicate to others by the DB.
13-
The following table represents a high level view of the responsibility of each of the daemons.
13+
The following table represents a high level view of the responsibility of each of the daemons and basic functionality.
1414

1515
## Daemons
1616

17-
Name | Domain| Purpose | Details
18-
-----------| ----------------- | -------| ----- |
19-
rucio-abacus-account | Accounting | Account usage | [Details](bin/rucio-abacus-account.md)
20-
rucio-abacus-collection-replica | Accounting | Updates collection replicas | [Details](bin/rucio-abacus-collection-replica.md)
21-
rucio-abacus-rse | Accounting | Updates RSE counters | [Details](bin/rucio-abacus-rse.md)
22-
rucio-atropos | Replica | End the life of the rules according to the Lifetime Model | [Details](bin/rucio-atropos.md)
23-
rucio-auditor | Replica | Find inconsistencies on storage, for example, dark data discovery | [Details](bin/rucio-auditor.md)
24-
rucio-automatix | Replica | Used for testing: injects random data in RSEs to check liveness | [Details](bin/rucio-automatix.md)
25-
rucio-bb8 | Replica | Rebalance data across RSEs | [Details](bin/rucio-bb8.md)
26-
rucio-cache-client | Replica | Populates information of replicas on volatile storage | [Details](bin/rucio-cache-client.md)
27-
rucio-cache-consumer | Replica | Adds and deletes cache replicas to the Rucio catalog | [Details](bin/rucio-cache-consumer.md)
28-
rucio-conveyor-finisher | Transfer | Updates Rucio internal state after the file transfer has finished | [Details](bin/rucio-conveyor-finisher.md)
29-
rucio-conveyor-poller | Transfer | Polls updates from the transfer tool to check the transfer state | [Details](bin/rucio-conveyor-poller.md)
30-
rucio-conveyor-preparer | Transfer | Prepares data transfers | [Details](bin/rucio-conveyor-preparer.md)
31-
rucio-conveyor-receiver | Transfer | Sister of poller, instead of polling for updates, it reads transfer tools notifications to check transfer state | [Details](bin/rucio-conveyor-receiver.md)
32-
rucio-conveyor-stager | Transfer | Issues staging (bring online) requests to tape RSEs | [Details](bin/rucio-conveyor-stager.md)
33-
rucio-conveyor-submitter | Transfer | Submit transfer requests to the transfer tool (prepares the transfer as well if the conveyor-preparer is not enabled) | [Details](bin/rucio-conveyor-submitter.md)
34-
rucio-conveyor-throttler | Transfer | Queues transfer requests inside Rucio, applying limits, ex: only one transfer at a time, etc ... | [Details](bin/rucio-conveyor-throttler.md)
35-
rucio-dark-reaper | Deletion | Deletes quarantined replicas | [Details](bin/rucio-dark-reaper.md)
36-
rucio-dumper | Consistency | Dumps file lists. The rucio-auditor consumes these dumps to discover dark data | [Details](bin/rucio-dumper.md)
37-
rucio-follower | Telemetry | Aggregates events affecting DIDs | [Details](bin/rucio-follower.md)
38-
rucio-hermes | Telemetry | Sends Rucio messages to external services (InfluxDB, OpenSearch, ActiveMQ, ...) | [Details](bin/rucio-hermes.md)
39-
rucio-judge-cleaner | Rule | Cleans expired replication rules | [Details](bin/rucio-judge-cleaner.md)
40-
rucio-judge-evaluator | Rule | Creates and evaluates replication rules based on their state (OK/REPL/STUCK) | [Details](bin/rucio-judge-evaluator.md)
41-
rucio-judge-injector | Rule | Asynchronously injects replication rules | [Details](bin/rucio-judge-injector.md)
42-
rucio-judge-repairer | Rule | Repairs stuck replication rules (STATE=STUCK) | [Details](bin/rucio-judge-repairer.md)
43-
rucio-kronos | Telemetry | Consumes Rucio tracing messages, updates access time of replicas and access count of DIDs | [Details](bin/rucio-kronos.md)
44-
rucio-minos | Replica | Reads list of physical file names (PFNs) declared bad and classifies them in: temporary unavailable and permanently unavailable (to be recovered by the necromancer daemon) | [Details](bin/rucio-minos.md)
45-
rucio-minos-temporary-expiration | Replica | Moves back TEMPORARY_UNAVAILABLE replicas into AVAILABLE state | [Details](bin/rucio-minos-temporary-expiration.md)
46-
rucio-necromancer | Deletion | Works on permanently unavailable replicas, it tries to recover the data from other valid replicas if any, else declares the replica as lost | [Details](bin/rucio-necromancer.md)
47-
rucio-oauth-manager | Auth/Authz | Deletes expired access tokens (in case there is a valid refresh token, expired access tokens will be kept until refresh_token expires as well.) and deletion of expired OAuth session parameters | [Details](bin/rucio-oauth-manager.md)
48-
rucio-reaper | Deletion | Deletes replicas that don't have locks anymore, i.e. they have a tombstone set | [Details](bin/rucio-reaper.md)
49-
rucio-suspicious-replica-recoverer | Replica | Declares suspicious replicas as bad if they are found available on other RSEs, so necromancer will work on them | [Details](bin/rucio-replica-recoverer.md)
50-
rucio-rse-decommissioner | Deletion | Decommissions an RSE. The actions to perform are specified in decommissioning profiles (delete all data, move replicas, etc ...) | [Details](bin/rucio-rse-decommissioner.md)
51-
rucio-storage-consistency-actions | Consistency | Applies corrective actions as a result of a consistency check on an RSE | [Details](bin/rucio-storage-consistency-actions.md)
52-
rucio-transmogrifier | Rule | Creates replication rules for DIDs matching a subscription | [Details](bin/rucio-transmogrifier.md)
53-
rucio-undertaker | Deletion | Manages expired DIDs, deleting them (does not delete replicas) | [Details](bin/rucio-undertaker.md)
17+
Name | Domain| Purpose | Batched? | Threaded? | Multi-VO? | Details
18+
-----------| ----------------- | -------| ----- | ----- | ----- | ----- |
19+
rucio-abacus-account | Accounting | Account usage | ❌ | ✅ | ❌ | [Details](bin/rucio-abacus-account.md)
20+
rucio-abacus-collection-replica | Accounting | Updates collection replicas | ❌ | ✅ | ❌ | [Details](bin/rucio-abacus-collection-replica.md)
21+
rucio-abacus-rse | Accounting | Updates RSE counters | ❌ | ✅ | ❌ | [Details](bin/rucio-abacus-rse.md)
22+
rucio-atropos | Replica | End the life of the rules according to the Lifetime Model | ❌ | ✅ | ❌ | [Details](bin/rucio-atropos.md)
23+
rucio-auditor | Replica | Find inconsistencies on storage, for example, dark data discovery | ❌ | ❌ | ❌ | [Details](bin/rucio-auditor.md)
24+
rucio-automatix | Replica | Used for testing: injects random data in RSEs to check liveness | ❌ | ✅ | ❌ | [Details](bin/rucio-automatix.md)
25+
rucio-bb8 | Replica | Rebalance data across RSEs | ❌ | ✅ | ❌ | [Details](bin/rucio-bb8.md)
26+
rucio-cache-client | Replica | Populates information of replicas on volatile storage | ❌ | ❌ | ❌ | [Details](bin/rucio-cache-client.md)
27+
rucio-cache-consumer | Replica | Adds and deletes cache replicas to the Rucio catalog | ❌ | ✅ | ❌ | [Details](bin/rucio-cache-consumer.md)
28+
rucio-conveyor-finisher | Transfer | Updates Rucio internal state after the file transfer has finished | ✅ | ✅ | ❌ | [Details](bin/rucio-conveyor-finisher.md)
29+
rucio-conveyor-poller | Transfer | Polls updates from the transfer tool to check the transfer state | ❌ | ✅ | ❌ | [Details](bin/rucio-conveyor-poller.md)
30+
rucio-conveyor-preparer | Transfer | Prepares data transfers | ✅ | ✅ | ❌ | [Details](bin/rucio-conveyor-preparer.md)
31+
rucio-conveyor-receiver | Transfer | Sister of poller, instead of polling for updates, it reads transfer tools notifications to check transfer state | ❌ | ❌ | ❌ | [Details](bin/rucio-conveyor-receiver.md)
32+
rucio-conveyor-stager | Transfer | Issues staging (bring online) requests to tape RSEs | ✅ |❌ | ✅ | [Details](bin/rucio-conveyor-stager.md)
33+
rucio-conveyor-submitter | Transfer | Submit transfer requests to the transfer tool (prepares the transfer as well if the conveyor-preparer is not enabled) | ✅ | ✅ | ✅ | [Details](bin/rucio-conveyor-submitter.md)
34+
rucio-conveyor-throttler | Transfer | Queues transfer requests inside Rucio, applying limits, ex: only one transfer at a time, etc ... | ❌ | ❌ | ❌ | [Details](bin/rucio-conveyor-throttler.md)
35+
rucio-dark-reaper | Deletion | Deletes quarantined replicas | ✅ | ✅ | ✅ | [Details](bin/rucio-dark-reaper.md)
36+
rucio-dumper | Consistency | Dumps file lists. The rucio-auditor consumes these dumps to discover dark data | ❌ | ❌ | ❌ | [Details](bin/rucio-dumper.md)
37+
rucio-follower | Telemetry | Aggregates events affecting DIDs | ❌ | ✅ | ❌ | [Details](bin/rucio-follower.md)
38+
rucio-hermes | Telemetry | Sends Rucio messages to external services (InfluxDB, OpenSearch, ActiveMQ, ...) | ✅ | ✅ | ❌ | [Details](bin/rucio-hermes.md)
39+
rucio-judge-cleaner | Rule | Cleans expired replication rules | ❌ | ✅ | ❌ | [Details](bin/rucio-judge-cleaner.md)
40+
rucio-judge-evaluator | Rule | Creates and evaluates replication rules based on their state (OK/REPL/STUCK) | ❌ | ✅ | ❌ | [Details](bin/rucio-judge-evaluator.md)
41+
rucio-judge-injector | Rule | Asynchronously injects replication rules | ❌ | ✅ | ❌ | [Details](bin/rucio-judge-injector.md)
42+
rucio-judge-repairer | Rule | Repairs stuck replication rules (STATE=STUCK) | ❌ | ✅ | ❌ | [Details](bin/rucio-judge-repairer.md)
43+
rucio-kronos | Telemetry | Consumes Rucio tracing messages, updates access time of replicas and access count of DIDs | ❌ | ✅ | ❌ | [Details](bin/rucio-kronos.md)
44+
rucio-minos | Replica | Reads list of physical file names (PFNs) declared bad and classifies them in: temporary unavailable and permanently unavailable (to be recovered by the necromancer daemon) | ✅ | ✅ | ❌ | [Details](bin/rucio-minos.md)
45+
rucio-minos-temporary-expiration | Replica | Moves back TEMPORARY_UNAVAILABLE replicas into AVAILABLE state | ✅ | ✅ | ❌ | [Details](bin/rucio-minos-temporary-expiration.md)
46+
rucio-necromancer | Deletion | Works on permanently unavailable replicas, it tries to recover the data from other valid replicas if any, else declares the replica as lost | ✅ | ✅ | ❌ | [Details](bin/rucio-necromancer.md)
47+
rucio-oauth-manager | Auth/Authz | Deletes expired access tokens (in case there is a valid refresh token, expired access tokens will be kept until refresh_token expires as well.) and deletion of expired OAuth session parameters | ❌ | ✅ | ❌ | [Details](bin/rucio-oauth-manager.md)
48+
rucio-reaper | Deletion | Deletes replicas that don't have locks anymore, i.e. they have a tombstone set | ✅ | ✅ | ✅ | [Details](bin/rucio-reaper.md)
49+
rucio-suspicious-replica-recoverer | Replica | Declares suspicious replicas as bad if they are found available on other RSEs, so necromancer will work on them | ❌ | ❌ | ✅ | [Details](bin/rucio-replica-recoverer.md)
50+
rucio-rse-decommissioner | Deletion | Decommissions an RSE. The actions to perform are specified in decommissioning profiles (delete all data, move replicas, etc ...) | ❌ | ❌ | ❌ | [Details](bin/rucio-rse-decommissioner.md)
51+
rucio-storage-consistency-actions | Consistency | Applies corrective actions as a result of a consistency check on an RSE | ❌ | ✅ | ❌ | [Details](bin/rucio-storage-consistency-actions.md)
52+
rucio-transmogrifier | Rule | Creates replication rules for DIDs matching a subscription | ✅ | ✅ | ❌ | [Details](bin/rucio-transmogrifier.md)
53+
rucio-undertaker | Deletion | Manages expired DIDs, deleting them (does not delete replicas) | ✅ | ✅ | ❌ | [Details](bin/rucio-undertaker.md)
5454

5555
## FAQ
5656

@@ -80,7 +80,7 @@ Dark reaper is the one deleting this dark data to free up space from the quarant
8080
When replicas are healthy, the judge-cleaner will set a tombstone on replicas where the lifetime has expired. These replicas are taken by the reaper and they are deleted.
8181
Sometimes, replicas can become unhealthy. A dump is created by the dumper daemon. The auditor checks these dumps and declares replicas as suspicious.
8282

83-
## How is a replica declared bad?
83+
### How is a replica declared bad?
8484
- An operator can declare a replica as bad issuing rucio cli commands.
8585
```
8686
rucio-admin replicas declare-bad [-h] --reason REASON [--inputfile [INPUTFILE]] [--allow-collection] [--lfns [LFNS]] [--scope [SCOPE]] [--rse [RSE]] [listbadfiles ...]
@@ -90,6 +90,54 @@ These bad replicas are taken by the necromancer daemon and then deleted if they
9090
- the suspicious-replica-recoverer is a daemon that will analyze different counters (transfer errors, download errors, etc ...) to mark replicas as being suspicious to have an issue. After hitting
9191
a certain limit (configurable by `--nattempts` flag), the replica is marked as bad and eventually consumed by the necromancer.
9292

93-
## What is the purpose of undertaker?
93+
### What is the purpose of undertaker?
9494
A dataset is "never" deleted, however, when the dataset is known to be bad, there is no point having it in the catalog. The undertaker daemon takes care to remove these datasets.
9595
An operator will set an expiration date in the past of the DIDs and this daemon will delete the dataset from the DB. If there were any replicas attached, the replicas will be deleted as well.
96+
97+
## Daemon arguments
98+
A full description for each daemon's arguments can be found by running `rucio-{daemon} --help` or viewing the `Details` in the daemon description table above.
99+
Listed below are common definitions between different daemons.
100+
101+
- **run-once** - Only run one iteration of the daemon. If executed with this argument the daemon will run once and close.
102+
- **sleep-time** - How long a daemon will sleep between iterations, mutually exclusive with `run-once`. Units of seconds.
103+
- **threads**, **total-workers**, **threads-per-process** - _[Present in threaded daemons]_ Run in threaded mode.
104+
- **bulk**, **chunk-size** - _[Present in batched daemons]_ Provide a limit of the number of operations a single instance of a daemon can run in an iteration.
105+
- **dry-run** - Run once, showing logs of the daemon's operations without preforming any action. Useful for verifying settings of the instance and daemon.
106+
- **vos** - _[Present in Multi-VO daemons]_ Provide a list VOs with which the daemon can interact. Used when VOs use different settings for their daemons.
107+
108+
### Batched Daemons
109+
110+
Some daemons can run over large backlogs depending on the traffic of an instance.
111+
To prevent the daemon from running too long, or submitting too many requests at once to an external system, a daemon's workload can be batched.
112+
Between batches of work, the daemon sleeps for `sleep-time`.
113+
114+
This setting is present in daemons that either submit requests (e.g. transfer requests) or process multiple replicas or DIDs (e.g. setting statuses, running deletion).
115+
116+
### Threaded Daemons
117+
118+
When daemons are run with threaded arguments, the database query used by the daemons has a `threads` argument applied to the query string.
119+
This is applicable to `oracle`, `postgres` and `mysql` databases.
120+
121+
> **_Note:_**
122+
This definition doesn't apply for producer/consumer daemons. When producer/consumer daemons are run in threaded mode, it creates multiple instances of producers and consumers. This includes the threaded `conveyor` daemons.
123+
124+
125+
### Multi-VO Daemons
126+
127+
Daemons that have a `vos` option can be set to have separate settings per vo running in a multi-vo instance.
128+
When this is set, the daemon will only interact with objects that are explicitly included in the specific VO.
129+
130+
By default, daemon with multi-VO options interact with all VOs on the instance.
131+
For example, this is the log displayed by the `replica-recoverer` daemon.
132+
133+
```bash
134+
$ rucio-replica-recoverer --run-once
135+
2020-07-28 15:15:14,151 5461 INFO replica_recoverer: This instance will work on VOs: def, abc, xyz, 123
136+
137+
138+
$ rucio-replica-recoverer --run-once --vos abc xyz
139+
2020-07-28 15:16:36,066 5474 INFO replica_recoverer: This instance will work on VOs: abc, xyz
140+
```
141+
142+
> **_Note:_**
143+
Multi-VO daemons can still be used in single-VO instances, and the `vo` option does not need to be set.

0 commit comments

Comments
 (0)