aboutsummaryrefslogtreecommitdiffstats
path: root/lib/dialyzer/test/small_SUITE_data/src/ddfs_master/config.hrl
blob: 8cab65fc9c125ebbef8b055f9fdf4168fb7fba8f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
-define(SECOND, 1000).
-define(MINUTE, (60 * ?SECOND)).
-define(HOUR, (60 * ?MINUTE)).
-define(DAY, (24 * ?HOUR)).
-define(MB, (1024 * 1024)).

% Maximum length of tag/blob prefix
-define(NAME_MAX, 511).

% How long ddfs node startup can take.  The most time-consuming part
% is the scanning of the tag objects in the node's DDFS volumes.
-define(NODE_STARTUP, (1 * ?MINUTE)).

% How long to wait on the master for replies from nodes.
-define(NODE_TIMEOUT, (10 * ?SECOND)).

% How long to wait for a reply from an operation coordinated by the
% master that accesses nodes.  This value should be larger than
% NODE_TIMEOUT.
-define(NODEOP_TIMEOUT, (1 * ?MINUTE)).

% The minimum amount of free space a node must have, to be considered
% a primary candidate host for a new blob.
-define(MIN_FREE_SPACE, (1024 * ?MB)).

% The maximum number of active HTTP connections on a system (this
% applies separately for GET and PUT operations).
-define(HTTP_MAX_ACTIVE, 3).

% The maximum number of waiting HTTP connections to queue up on a busy system.
-define(HTTP_QUEUE_LENGTH, 100).

% The maximum number of simultaneous HTTP connections. Note that
% HTTP_MAX_CONNS * 2 * 2 + 32 < Maximum number of file descriptors, where
% 2 = Get and put, 2 = two FDs required for each connection (connection
% itself + a file it accesses), 32 = a guess how many extra fds is needed.
-define(HTTP_MAX_CONNS, 128).

% How long to keep a PUT request in queue if the system is busy.
-define(PUT_WAIT_TIMEOUT, (1 * ?MINUTE)).

% How long to keep a GET request in queue if the system is busy.
-define(GET_WAIT_TIMEOUT, (1 * ?MINUTE)).

% An unused loaded tag expires in TAG_EXPIRES milliseconds.  Note that
% if TAG_EXPIRES is not smaller than GC_INTERVAL, tags will never
% expire from the memory cache and will always take up memory.
-define(TAG_EXPIRES, (10 * ?HOUR)).

% How often the master's cache of all known tag names is refreshed.
% This refresh is only needed to purge deleted tags eventually from
% the tag cache. It doesn't harm to have a long interval.
-define(TAG_CACHE_INTERVAL, (10 * ?MINUTE)).

% How soon a tag object initialized in memory expires if it's content
% cannot be fetched from the cluster.
-define(TAG_EXPIRES_ONERROR, (1 * ?SECOND)).

% How often a DDFS node should refresh its tag cache from disk.
-define(FIND_TAGS_INTERVAL, ?DAY).

% How often buffered (delayed) updates to a tag need to be
% flushed. Tradeoff: The longer the interval, the more updates are
% bundled in a single commit.  On the other hand, in the worst case
% the requester has to wait for the full interval before getting a
% reply. A long interval also increases the likelihood that the server
% crashes before the commit has finished successfully, making requests
% more unreliable.
-define(DELAYED_FLUSH_INTERVAL, (1 * ?SECOND)).

% How long to wait between garbage collection runs.
-define(GC_INTERVAL, ?DAY).

% Max duration for a GC run.  This should be smaller than
% min(ORPHANED_{BLOB,TAG}_EXPIRES).
-define(GC_MAX_DURATION, (3 * ?DAY)).

% How long to wait after startup for cluster to stabilize before
% starting the first GC run.
-define(GC_DEFAULT_INITIAL_WAIT, (5 * ?MINUTE)).

% The longest potential interval between messages in the GC protocol;
% used to ensure GC makes forward progress.  This can be set to the
% estimated time to traverse all the volumes on a DDFS node.
-define(GC_PROGRESS_INTERVAL, (30 * ?MINUTE)).

% Number of extra replicas (i.e. lost replicas recovered during GC) to
% allow before deleting extra replicas.
-define(NUM_EXTRA_REPLICAS, 1).

% Permissions for files backing blobs and tags.
-define(FILE_MODE, 8#00400).

% How often to check available disk space in ddfs_node.
-define(DISKSPACE_INTERVAL, (10 * ?SECOND)).

% The maximum size of payloads of HTTP requests to the /ddfs/tag/
% prefix.
-define(MAX_TAG_BODY_SIZE, (512 * ?MB)).

% Tag attribute names and values have a limited size, and there
% can be only a limited number of them.
-define(MAX_TAG_ATTRIB_NAME_SIZE, 1024).
-define(MAX_TAG_ATTRIB_VALUE_SIZE, 1024).
-define(MAX_NUM_TAG_ATTRIBS, 1000).

% How long HTTP requests that perform tag updates should wait to
% finish (a long time).
-define(TAG_UPDATE_TIMEOUT, ?DAY).

% Timeout for re-replicating a single blob over HTTP PUT.  This
% depends on the largest blobs hosted by DDFS, and the speed of the
% cluster network.
-define(GC_PUT_TIMEOUT, (180 * ?MINUTE)).

% Delete !partial files after this many milliseconds.
-define(PARTIAL_EXPIRES, ?DAY).

% When orphaned blob can be deleted.  This should be large enough that
% you can upload all the new blobs of a tag and perform the tag update
% within this time.
-define(ORPHANED_BLOB_EXPIRES, (5 * ?DAY)).

% When orphaned tag can be deleted.
-define(ORPHANED_TAG_EXPIRES, (5 * ?DAY)).

% How long a tag has to stay on the deleted list before
% we can permanently forget it, after all known instances
% of the tag object have been removed. This quarantine period
% ensures that a node that was temporarily unavailable
% and reactivates can't resurrect deleted tags. You
% must ensure that all temporarily inactive nodes
% are reactivated (or cleaned) within the ?DELETED_TAG_EXPIRES
% time frame.
%
% This value _must_ be larger than the other time-related DDFS
% parameters listed in this file.  In particular, it must be larger
% than ORPHANED_TAG_EXPIRES.
-define(DELETED_TAG_EXPIRES, (30 * ?DAY)).

% How many times a tag operation should be retried before aborting.
-define(MAX_TAG_OP_RETRIES, 3).

% How long to wait before timing out a tag retrieval.  This should be
% large enough to read a large tag object off the disk and send it
% over the network.
-define(GET_TAG_TIMEOUT, (5 * ?MINUTE)).