hive_schema.html 63.2 KB
Newer Older
1
2
3

<html>
<head>
Leo Gordon's avatar
Leo Gordon committed
4

5
<link rel="stylesheet" type="text/css" media="all" href="ehive_doc.css" />
6
7
<base href="http://www.ensembl.org/"/>
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
Leo Gordon's avatar
Leo Gordon committed
8

9
<title>Schema Documentation</title>
10
<meta name="order" content="2" />
11
12

<script language="Javascript" type="text/javascript">
13
14
  var img_plus   = '<img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/>';
  var img_minus  = '<img src="/i/16/minus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="hide"/>';
15
16

  // Function to show/hide the columns table
17
18
  function show_hide (param, a_text) {
  
19
    // Schema tables
20
21
22
    if (a_text === 'columns') {
      div_id   = '#div_'+param;
      alink_id = '#a_'+param;
23
    }  
24
25
26
27
    // Species list
    else if (a_text === 'species') {
      div_id   = '#sp_'+param;
      alink_id = '#s_'+param;
28
    }
29
    // Example tables
30
    else {
31
32
      div_id   = '#ex_'+param;
      alink_id = '#e_'+param;
33
    }
34
35
36
37
38
39
40
41
    
    if ($(div_id).is(':visible')) {
      $(alink_id).html(img_plus+' Show '+a_text);
    }
    else if ($(div_id).is(':hidden')) {
      $(alink_id).html(img_minus+' Hide '+a_text);
    }
    $(div_id).slideToggle( 300 );
42
43
44
  }
  
  // Function to show/hide all the tables
45
46
47
48
49
50
51
  function show_hide_all (link_text) {
    expand_div = '#expand';
    div_prefix = 'div_';
    $("div[id^='"+div_prefix+"']").each(function() {
      param = $(this).attr('id').substring(div_prefix.length);
      div_id   = '#'+$(this).attr('id');
      alink_id = '#a_'+param;
52
      
53
54
55
      if ($(alink_id)) {
        if ($(expand_div).value=='0') {
          $(alink_id).html(img_minus+' Hide '+link_text);
56
57
        }
        else {
58
          $(alink_id).html(img_plus+' Show '+link_text);
59
60
        }
      }
61
62
63
64
      $(div_id).slideToggle( 500 );
    });
    if ($(expand_div).value=='0') {
      $(expand_div).value='1';
65
66
    }
    else {
67
      $(expand_div).value='0';
68
69
70
71
72
    }
  }
</script>
</head>
<body>
73

74

75
76
<h1>Ensembl Hive Schema Documentation</h1>

Leo Gordon's avatar
Leo Gordon committed
77
78
79
80
81
<P>
This document describes the tables that make up the Hive schema. Tables are grouped into categories, and the purpose of each table is explained.<BR>
You can toggle the display of individual columns using [Show/Hide columns] buttons.
</P>
<P>
82
<A HREF="hive_schema.png">Hive schema diagram</A> links the tables together.
Leo Gordon's avatar
Leo Gordon committed
83
84
</P>

85

86

87
88
89
<h3 id="top">List of the tables:</h3>
<div>

90
91
92
93
  <div style="background-color:#F4F4F4;border-left:1px dotted #BBB;border-right:1px dotted #BBB;border-bottom:1px dotted #BBB;margin-bottom:15px;float:left;margin-right:20px;min-width:200px">
    <div style="padding:2px 5px;background-color:#FFF;border-top:2px solid #C70C09;border-bottom:1px solid #C70C09">
      <div style="background-color:#C70C09;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:middle"></div>
      <h2 style="margin-left:8px;display:inline;color:#000;vertical-align:middle">Pipeline structure</h2>
94
95
    </div>
      <ul style="padding:0px 4px 0px 22px;margin-bottom:2px">
96
97
98
99
100
101
        <li style="margin-right:0px"><a href="#hive_meta" style="text-decoration:none;font-weight:bold">hive_meta</a></li>
        <li style="margin-right:0px"><a href="#pipeline_wide_parameters" style="text-decoration:none;font-weight:bold">pipeline_wide_parameters</a></li>
        <li style="margin-right:0px"><a href="#analysis_base" style="text-decoration:none;font-weight:bold">analysis_base</a></li>
        <li style="margin-right:0px"><a href="#analysis_stats" style="text-decoration:none;font-weight:bold">analysis_stats</a></li>
        <li style="margin-right:0px"><a href="#dataflow_rule" style="text-decoration:none;font-weight:bold">dataflow_rule</a></li>
        <li style="margin-right:0px"><a href="#analysis_ctrl_rule" style="text-decoration:none;font-weight:bold">analysis_ctrl_rule</a></li>
102
103
104

      </ul>
    </div>
105

106
107
108
109
  <div style="background-color:#F4F4F4;border-left:1px dotted #BBB;border-right:1px dotted #BBB;border-bottom:1px dotted #BBB;margin-bottom:15px;float:left;margin-right:20px;min-width:200px">
    <div style="padding:2px 5px;background-color:#FFF;border-top:2px solid #FF7504;border-bottom:1px solid #FF7504">
      <div style="background-color:#FF7504;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:middle"></div>
      <h2 style="margin-left:8px;display:inline;color:#000;vertical-align:middle">Resources</h2>
110
111
    </div>
      <ul style="padding:0px 4px 0px 22px;margin-bottom:2px">
112
113
        <li style="margin-right:0px"><a href="#resource_class" style="text-decoration:none;font-weight:bold">resource_class</a></li>
        <li style="margin-right:0px"><a href="#resource_description" style="text-decoration:none;font-weight:bold">resource_description</a></li>
114
115
116

      </ul>
    </div>
117

118
119
120
121
  <div style="background-color:#F4F4F4;border-left:1px dotted #BBB;border-right:1px dotted #BBB;border-bottom:1px dotted #BBB;margin-bottom:15px;float:left;margin-right:20px;min-width:200px">
    <div style="padding:2px 5px;background-color:#FFF;border-top:2px solid #1D73DA;border-bottom:1px solid #1D73DA">
      <div style="background-color:#1D73DA;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:middle"></div>
      <h2 style="margin-left:8px;display:inline;color:#000;vertical-align:middle">Job-related</h2>
122
123
    </div>
      <ul style="padding:0px 4px 0px 22px;margin-bottom:2px">
124
125
126
127
        <li style="margin-right:0px"><a href="#job" style="text-decoration:none;font-weight:bold">job</a></li>
        <li style="margin-right:0px"><a href="#job_file" style="text-decoration:none;font-weight:bold">job_file</a></li>
        <li style="margin-right:0px"><a href="#accu" style="text-decoration:none;font-weight:bold">accu</a></li>
        <li style="margin-right:0px"><a href="#analysis_data" style="text-decoration:none;font-weight:bold">analysis_data</a></li>
128
129
130

      </ul>
    </div>
131

132
133
134
135
  <div style="background-color:#F4F4F4;border-left:1px dotted #BBB;border-right:1px dotted #BBB;border-bottom:1px dotted #BBB;margin-bottom:15px;float:left;margin-right:20px;min-width:200px">
    <div style="padding:2px 5px;background-color:#FFF;border-top:2px solid #24DA06;border-bottom:1px solid #24DA06">
      <div style="background-color:#24DA06;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:middle"></div>
      <h2 style="margin-left:8px;display:inline;color:#000;vertical-align:middle">execution tables</h2>
136
137
    </div>
      <ul style="padding:0px 4px 0px 22px;margin-bottom:2px">
138
139
        <li style="margin-right:0px"><a href="#worker" style="text-decoration:none;font-weight:bold">worker</a></li>
        <li style="margin-right:0px"><a href="#role" style="text-decoration:none;font-weight:bold">role</a></li>
140
141
142

      </ul>
    </div>
143
144
145
146
  <div style="clear:both" />
</div>

<div>
147
148
149
150
  <div style="background-color:#F4F4F4;border-left:1px dotted #BBB;border-right:1px dotted #BBB;border-bottom:1px dotted #BBB;margin-bottom:15px;float:left;margin-right:20px;min-width:200px">
    <div style="padding:2px 5px;background-color:#FFF;border-top:2px solid #F4D20C;border-bottom:1px solid #F4D20C">
      <div style="background-color:#F4D20C;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:middle"></div>
      <h2 style="margin-left:8px;display:inline;color:#000;vertical-align:middle">Logging and monitoring</h2>
151
152
    </div>
      <ul style="padding:0px 4px 0px 22px;margin-bottom:2px">
153
154
155
        <li style="margin-right:0px"><a href="#worker_resource_usage" style="text-decoration:none;font-weight:bold">worker_resource_usage</a></li>
        <li style="margin-right:0px"><a href="#log_message" style="text-decoration:none;font-weight:bold">log_message</a></li>
        <li style="margin-right:0px"><a href="#analysis_stats_monitor" style="text-decoration:none;font-weight:bold">analysis_stats_monitor</a></li>
156
157
158

      </ul>
    </div>
159
160
161

  <div style="clear:both" />
</div>
162
  <input type="button" onclick="show_hide_all('columns')" class="fbutton" value="Show/hide all"/>
163
164
  <input type="hidden" id="expand" value="0" />
  
165
166
167
168

<div style="background-color:#F4F4F4;padding:5px 4px;margin:75px 0px 5px;border-top:2px solid #C70C09;border-bottom:1px solid #C70C09">
  <div id="1" style="background-color:#C70C09;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:top"></div>
  <h2 id="1" style="display:inline;color:#000;padding-top:0px;margin-left:6px">Pipeline structure</h2>
169
170
</div>

171
172
173
174
175
176
177
178
179
180
  <div id="hive_meta" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #C70C09">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#C70C09;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>hive_meta</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_hive_meta" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('hive_meta','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
Leo Gordon's avatar
Leo Gordon committed
181
    </div>
182
    <div style="clear:both"></div>
Leo Gordon's avatar
Leo Gordon committed
183
184
185
186
187
188
  </div>
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">This table keeps several important hive-specific pipeline-wide key-value pairs such as hive_sql_schema_version, hive_use_triggers and hive_pipeline_name.</p>

  <div id="div_hive_meta" style="display:none">
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
189
      <tr class="bg1"><td><b>meta_key</b></td><td>VARCHAR(255)</td><td>-</td><td>the KEY of KEY-VALUE pairs (primary key)</td><td></td></tr>
190
      <tr class="bg2"><td><b>meta_value</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>the VALUE of KEY-VALUE pairs</td><td></td></tr>
Leo Gordon's avatar
Leo Gordon committed
191
192
193
    </table>
  </div>

194
195
196
197
198
199
200
201
202
203
  <div id="pipeline_wide_parameters" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #C70C09">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#C70C09;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>pipeline_wide_parameters</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_pipeline_wide_parameters" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('pipeline_wide_parameters','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
Leo Gordon's avatar
Leo Gordon committed
204
    </div>
205
    <div style="clear:both"></div>
Leo Gordon's avatar
Leo Gordon committed
206
207
208
209
210
211
  </div>
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">This table contains a simple hash between pipeline_wide_parameter names and their values. The same data used to live in 'meta' table until both the schema and the API were finally separated from Ensembl Core.</p>

  <div id="div_pipeline_wide_parameters" style="display:none">
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
212
      <tr class="bg1"><td><b>param_name</b></td><td>VARCHAR(255)</td><td>-</td><td>the KEY of KEY-VALUE pairs (primary key)</td><td>key: value_idx</td></tr>
213
      <tr class="bg2"><td><b>param_value</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>the VALUE of KEY-VALUE pairs</td><td></td></tr>
Leo Gordon's avatar
Leo Gordon committed
214
215
216
    </table>
  </div>

217
218
219
220
221
222
223
224
225
226
  <div id="analysis_base" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #C70C09">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#C70C09;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>analysis_base</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_analysis_base" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('analysis_base','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
227
    </div>
228
    <div style="clear:both"></div>
229
  </div>
230
231
232
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Each Analysis is a node of the pipeline diagram. It acts both as a "class" to which Jobs belong (and inherit from it certain properties) and as a "container" for them (Jobs of an Analysis can be blocking all Jobs of another Analysis).</p>

  <div id="div_analysis_base" style="display:none">
233
234
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
235
236
      <tr class="bg1"><td><b>analysis_id</b></td><td>INTEGER</td><td>-</td><td>a unique ID that is also a foreign key to most of the other tables</td><td></td></tr>
      <tr class="bg2"><td><b>logic_name</b></td><td>VARCHAR(255)</td><td>-</td><td>the name of the Analysis object</td><td>unique  key: logic_name_idx</td></tr>
237
238
239
240
241
242
243
244
245
246
      <tr class="bg1"><td><b>module</b></td><td>VARCHAR(255)</td><td>-</td><td>the name of the module / package that runs this Analysis</td><td></td></tr>
      <tr class="bg2"><td><b>language</b></td><td>VARCHAR(255)</td><td>NULL</td><td>the language of the module, if not Perl</td><td></td></tr>
      <tr class="bg1"><td><b>parameters</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>a stingified hash of parameters common to all jobs of the Analysis</td><td></td></tr>
      <tr class="bg2"><td><b>resource_class_id</b></td><td>INTEGER</td><td>-</td><td>link to the resource_class table</td><td></td></tr>
      <tr class="bg1"><td><b>failed_job_tolerance</b></td><td>INTEGER</td><td>0</td><td>% of tolerated failed Jobs</td><td></td></tr>
      <tr class="bg2"><td><b>max_retry_count</b></td><td>INTEGER</td><td>3</td><td>how many times a job of this Analysis will be retried (unless there is no point)</td><td></td></tr>
      <tr class="bg1"><td><b>can_be_empty</b></td><td>SMALLINT</td><td>0</td><td>if TRUE, this Analysis will not be blocking if/while it doesn't have any jobs</td><td></td></tr>
      <tr class="bg2"><td><b>priority</b></td><td>SMALLINT</td><td>0</td><td>an Analysis with higher priority will be more likely chosen on Worker's specialization</td><td></td></tr>
      <tr class="bg1"><td><b>meadow_type</b></td><td>VARCHAR(255)</td><td>NULL</td><td>if defined, forces this Analysis to be run only on the given Meadow</td><td></td></tr>
      <tr class="bg2"><td><b>analysis_capacity</b></td><td>INTEGER</td><td>NULL</td><td>if defined, limits the number of Workers of this particular Analysis that are allowed to run in parallel</td><td></td></tr>
247
248
249
    </table>
  </div>

250
251
252
253
254
255
256
257
258
259
  <div id="analysis_stats" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #C70C09">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#C70C09;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>analysis_stats</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_analysis_stats" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('analysis_stats','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
260
    </div>
261
    <div style="clear:both"></div>
262
  </div>
263
264
265
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Parallel table to analysis_base which provides high level statistics on the state of an analysis and it's jobs.  Used to provide a fast overview, and to provide final approval of 'DONE' which is used by the blocking rules to determine when to unblock other analyses.  Also provides</p>

  <div id="div_analysis_stats" style="display:none">
266
267
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
268
      <tr class="bg1"><td><b>analysis_id</b></td><td>INTEGER</td><td>-</td><td>foreign-keyed to the corresponding analysis_base entry</td><td>primary key</td></tr>
269
270
271
272
273
274
275
276
277
      <tr class="bg2"><td><b>batch_size</b></td><td>INTEGER</td><td>1</td><td>how many jobs are claimed in one claiming operation before Worker starts executing them</td><td></td></tr>
      <tr class="bg1"><td><b>hive_capacity</b></td><td>INTEGER</td><td>NULL</td><td>a reciprocal limiter on the number of Workers running at the same time (dependent on Workers of other Analyses)</td><td></td></tr>
      <tr class="bg2"><td><b>status</b></td><td>ENUM('BLOCKED', 'LOADING', 'SYNCHING', 'EMPTY', 'READY', 'WORKING', 'ALL_CLAIMED', 'DONE', 'FAILED')</td><td>'EMPTY'</td><td>cached state of the Analysis</td><td></td></tr>
      <tr class="bg1"><td><b>total_job_count</b></td><td>INTEGER</td><td>0</td><td>total number of Jobs of this Analysis</td><td></td></tr>
      <tr class="bg2"><td><b>semaphored_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in SEMAPHORED state</td><td></td></tr>
      <tr class="bg1"><td><b>ready_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in READY state</td><td></td></tr>
      <tr class="bg2"><td><b>done_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in DONE state</td><td></td></tr>
      <tr class="bg1"><td><b>failed_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in FAILED state</td><td></td></tr>
      <tr class="bg2"><td><b>num_running_workers</b></td><td>INTEGER</td><td>0</td><td>number of running Workers of this Analysis</td><td></td></tr>
278
279
280
281
282
283
284
285
286
      <tr class="bg1"><td><b>behaviour</b></td><td>ENUM('STATIC', 'DYNAMIC')</td><td>'STATIC'</td><td>whether hive_capacity is set or is dynamically calculated based on timers</td><td></td></tr>
      <tr class="bg2"><td><b>input_capacity</b></td><td>INTEGER</td><td>4</td><td>used to compute hive_capacity in DYNAMIC mode</td><td></td></tr>
      <tr class="bg1"><td><b>output_capacity</b></td><td>INTEGER</td><td>4</td><td>used to compute hive_capacity in DYNAMIC mode</td><td></td></tr>
      <tr class="bg2"><td><b>avg_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg1"><td><b>avg_input_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg2"><td><b>avg_run_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg1"><td><b>avg_output_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg2"><td><b>when_updated</b></td><td>TIMESTAMP</td><td>NULL</td><td>when this entry was last updated</td><td></td></tr>
      <tr class="bg1"><td><b>sync_lock</b></td><td>SMALLINT</td><td>0</td><td>a binary lock flag to prevent simultaneous updates</td><td></td></tr>
287
288
289
    </table>
  </div>

290
291
292
293
294
295
296
297
298
299
  <div id="dataflow_rule" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #C70C09">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#C70C09;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>dataflow_rule</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_dataflow_rule" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('dataflow_rule','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
300
    </div>
301
    <div style="clear:both"></div>
302
  </div>
303
304
305
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Extension of simple_rule design except that goal(to) is now in extended URL format e.g. mysql://ensadmin:<pass>@ecs2:3361/compara_hive_test?analysis.logic_name='blast_NCBI34' (full network address of an analysis). The only requirement is that there are rows in the job, analysis, dataflow_rule, and worker tables so that the following join works on the same database  WHERE analysis.analysis_id = dataflow_rule.from_analysis_id  AND   analysis.analysis_id = job.analysis_id AND   analysis.analysis_id = worker.analysis_id These are the rules used to create entries in the job table where the input_id (control data) is passed from one analysis to the next to define work. The analysis table will be extended so that it can specify different read and write databases, with the default being the database the analysis is on</p>

  <div id="div_dataflow_rule" style="display:none">
306
307
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
308
309
      <tr class="bg1"><td><b>dataflow_rule_id</b></td><td>INTEGER</td><td>-</td><td>internal ID</td><td></td></tr>
      <tr class="bg2"><td><b>from_analysis_id</b></td><td>INTEGER</td><td>-</td><td>foreign key to analysis table analysis_id</td><td>unique: key</td></tr>
310
311
312
      <tr class="bg1"><td><b>branch_code</b></td><td>INTEGER</td><td>1</td><td>branch_code of the fan</td><td>unique: key</td></tr>
      <tr class="bg2"><td><b>funnel_dataflow_rule_id</b></td><td>INTEGER</td><td>NULL</td><td>dataflow_rule_id of the semaphored funnel (is NULL by default, which means dataflow is not semaphored)</td><td>unique: key</td></tr>
      <tr class="bg1"><td><b>to_analysis_url</b></td><td>VARCHAR(255)</td><td>''</td><td>foreign key to net distributed analysis logic_name reference</td><td>unique: key</td></tr>
313
      <tr class="bg2"><td><b>input_id_template</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>a template for generating a new input_id (not necessarily a hashref) in this dataflow; if undefined is kept original</td><td>unique: key</td></tr>
314
315
316
    </table>
  </div>

317
318
319
320
321
322
323
324
325
326
  <div id="analysis_ctrl_rule" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #C70C09">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#C70C09;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>analysis_ctrl_rule</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_analysis_ctrl_rule" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('analysis_ctrl_rule','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
327
    </div>
328
    <div style="clear:both"></div>
329
  </div>
330
331
332
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">These rules define a higher level of control. These rules are used to turn whole anlysis nodes on/off (READY/BLOCKED). If any of the condition_analyses are not 'DONE' the ctrled_analysis is set to BLOCKED. When all conditions become 'DONE' then ctrled_analysis is set to READY The workers switch the analysis.status to 'WORKING' and 'DONE'. But any moment if a condition goes false, the analysis is reset to BLOCKED.</p>

  <div id="div_analysis_ctrl_rule" style="display:none">
333
334
335
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
      <tr class="bg1"><td><b>condition_analysis_url</b></td><td>VARCHAR(255)</td><td>''</td><td>foreign key to net distributed analysis reference</td><td>unique: key</td></tr>
336
      <tr class="bg2"><td><b>ctrled_analysis_id</b></td><td>INTEGER</td><td>-</td><td>foreign key to analysis table analysis_id</td><td>unique: key</td></tr>
337
338
339
    </table>
  </div>

340
341
342
343

<div style="background-color:#F4F4F4;padding:5px 4px;margin:75px 0px 5px;border-top:2px solid #FF7504;border-bottom:1px solid #FF7504">
  <div id="2" style="background-color:#FF7504;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:top"></div>
  <h2 id="2" style="display:inline;color:#000;padding-top:0px;margin-left:6px">Resources</h2>
344
345
</div>

346
347
348
349
350
351
352
353
354
355
  <div id="resource_class" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #FF7504">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#FF7504;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>resource_class</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_resource_class" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('resource_class','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
356
    </div>
357
    <div style="clear:both"></div>
358
  </div>
359
360
361
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Maps between resource_class numeric IDs and unique names.</p>

  <div id="div_resource_class" style="display:none">
362
363
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
364
365
      <tr class="bg1"><td><b>resource_class_id</b></td><td>INTEGER</td><td>-</td><td>unique ID of the ResourceClass</td><td></td></tr>
      <tr class="bg2"><td><b>name</b></td><td>VARCHAR(255)</td><td>-</td><td>unique name of the ResourceClass</td><td>unique: key</td></tr>
366
367
368
    </table>
  </div>

369
370
371
372
373
374
375
376
377
378
  <div id="resource_description" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #FF7504">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#FF7504;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>resource_description</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_resource_description" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('resource_description','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
379
    </div>
380
    <div style="clear:both"></div>
381
  </div>
382
383
384
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Maps (ResourceClass, MeadowType) pair to Meadow-specific resource lines.</p>

  <div id="div_resource_description" style="display:none">
385
386
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
387
388
      <tr class="bg1"><td><b>resource_class_id</b></td><td>INTEGER</td><td>-</td><td>foreign-keyed to the ResourceClass entry</td><td>primary key</td></tr>
      <tr class="bg2"><td><b>meadow_type</b></td><td>VARCHAR(255)</td><td>-</td><td>if the Worker is about to be executed on the given Meadow...</td><td>primary key</td></tr>
389
390
      <tr class="bg1"><td><b>submission_cmd_args</b></td><td>VARCHAR(255)</td><td>''</td><td>... these are the resource arguments (queue, memory,...) to give to the submission command</td><td></td></tr>
      <tr class="bg2"><td><b>worker_cmd_args</b></td><td>VARCHAR(255)</td><td>''</td><td>... and these are the arguments that are given to the worker command being submitted</td><td></td></tr>
391
392
393
    </table>
  </div>

394
395
396
397

<div style="background-color:#F4F4F4;padding:5px 4px;margin:75px 0px 5px;border-top:2px solid #1D73DA;border-bottom:1px solid #1D73DA">
  <div id="3" style="background-color:#1D73DA;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:top"></div>
  <h2 id="3" style="display:inline;color:#000;padding-top:0px;margin-left:6px">Job-related</h2>
398
399
</div>

400
401
402
403
404
405
406
407
408
409
  <div id="job" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #1D73DA">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#1D73DA;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>job</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_job" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('job','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
410
    </div>
411
    <div style="clear:both"></div>
412
  </div>
413
414
415
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">The job is the heart of this system.  It is the kiosk or blackboard where workers find things to do and then post work for other works to do. These jobs are created prior to work being done, are claimed by workers, are updated as the work is done, with a final update on completion.</p>

  <div id="div_job" style="display:none">
416
417
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
418
      <tr class="bg1"><td><b>job_id</b></td><td>INTEGER</td><td>-</td><td>autoincrement id</td><td></td></tr>
419
      <tr class="bg2"><td><b>prev_job_id</b></td><td>INTEGER</td><td>NULL</td><td>previous job which created this one</td><td></td></tr>
420
421
      <tr class="bg1"><td><b>analysis_id</b></td><td>INTEGER</td><td>-</td><td>the analysis_id needed to accomplish this job.</td><td>unique  key: input_id_stacks_analysis<br />key: analysis_status_retry</td></tr>
      <tr class="bg2"><td><b>input_id</b></td><td>CHAR(255)</td><td>-</td><td>input data passed into Analysis:RunnableDB to control the work</td><td>unique  key: input_id_stacks_analysis</td></tr>
422
423
      <tr class="bg1"><td><b>param_id_stack</b></td><td>CHAR(64)</td><td>''</td><td>a CSV of job_ids whose input_ids contribute to the stack of local variables for the job</td><td>unique  key: input_id_stacks_analysis</td></tr>
      <tr class="bg2"><td><b>accu_id_stack</b></td><td>CHAR(64)</td><td>''</td><td>a CSV of job_ids whose accu's contribute to the stack of local variables for the job</td><td>unique  key: input_id_stacks_analysis</td></tr>
424
425
      <tr class="bg1"><td><b>role_id</b></td><td>INTEGER</td><td>NULL</td><td>links to the Role that claimed this job (NULL means it has never been claimed)</td><td>key: role_status</td></tr>
      <tr class="bg2"><td><b>status</b></td><td>ENUM('SEMAPHORED','READY','CLAIMED','COMPILATION','PRE_CLEANUP','FETCH_INPUT','RUN','WRITE_OUTPUT','POST_CLEANUP','DONE','FAILED','PASSED_ON')</td><td>'READY'</td><td>state the job is in</td><td>key: analysis_status_retry<br />key: role_status</td></tr>
426
      <tr class="bg1"><td><b>retry_count</b></td><td>INTEGER</td><td>0</td><td>number times job had to be reset when worker failed to run it</td><td>key: analysis_status_retry</td></tr>
427
      <tr class="bg2"><td><b>when_completed</b></td><td>TIMESTAMP</td><td>NULL</td><td>when the job was completed</td><td></td></tr>
428
429
430
431
      <tr class="bg1"><td><b>runtime_msec</b></td><td>INTEGER</td><td>NULL</td><td>how long did it take to execute the job (or until the moment it failed)</td><td></td></tr>
      <tr class="bg2"><td><b>query_count</b></td><td>INTEGER</td><td>NULL</td><td>how many SQL queries were run during this job</td><td></td></tr>
      <tr class="bg1"><td><b>semaphore_count</b></td><td>INTEGER</td><td>0</td><td>if this count is >0, the job is conditionally blocked (until this count drops to 0 or below). Default=0 means "nothing is blocking me by default".</td><td></td></tr>
      <tr class="bg2"><td><b>semaphored_job_id</b></td><td>INTEGER</td><td>NULL</td><td>the job_id of job S that is waiting for this job to decrease S's semaphore_count. Default=NULL means "I'm not blocking anything by default".</td><td></td></tr>
432
433
434
    </table>
  </div>

435
436
437
438
439
440
441
442
443
444
  <div id="job_file" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #1D73DA">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#1D73DA;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>job_file</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_job_file" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('job_file','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
445
    </div>
446
    <div style="clear:both"></div>
447
  </div>
448
449
450
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">For testing/debugging purposes both STDOUT and STDERR streams of each Job can be redirected into a separate log file. This table holds filesystem paths to one or both of those files. There is max one entry per job_id and retry.</p>

  <div id="div_job_file" style="display:none">
451
452
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
453
454
455
456
457
      <tr class="bg1"><td><b>job_id</b></td><td>INTEGER</td><td>-</td><td>foreign key</td><td>primary key</td></tr>
      <tr class="bg2"><td><b>retry</b></td><td>INTEGER</td><td>-</td><td>copy of retry_count of job as it was run</td><td>primary key</td></tr>
      <tr class="bg1"><td><b>role_id</b></td><td>INTEGER</td><td>-</td><td>links to the Role that claimed this job</td><td>key: role</td></tr>
      <tr class="bg2"><td><b>stdout_file</b></td><td>VARCHAR(255)</td><td>NULL</td><td>path to the job's STDOUT log</td><td></td></tr>
      <tr class="bg1"><td><b>stderr_file</b></td><td>VARCHAR(255)</td><td>NULL</td><td>path to the job's STDERR log</td><td></td></tr>
458
459
460
    </table>
  </div>

461
462
463
464
465
466
467
468
469
470
  <div id="accu" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #1D73DA">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#1D73DA;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>accu</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_accu" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('accu','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
471
    </div>
472
    <div style="clear:both"></div>
473
474
475
476
  </div>
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Accumulator for funneled dataflow.</p>

  <div id="div_accu" style="display:none">
477
478
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
479
480
481
482
      <tr class="bg1"><td><b>sending_job_id</b></td><td>INTEGER</td><td>NULL</td><td>semaphoring job in the "box"</td><td>key: accu_sending_idx</td></tr>
      <tr class="bg2"><td><b>receiving_job_id</b></td><td>INTEGER</td><td>-</td><td>semaphored job outside the "box"</td><td>key: accu_receiving_idx</td></tr>
      <tr class="bg1"><td><b>struct_name</b></td><td>VARCHAR(255)</td><td>-</td><td>name of the structured parameter</td><td></td></tr>
      <tr class="bg2"><td><b>key_signature</b></td><td>VARCHAR(255)</td><td>-</td><td>locates the part of the structured parameter</td><td></td></tr>
483
      <tr class="bg1"><td><b>value</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>value of the part</td><td></td></tr>
484
485
486
    </table>
  </div>

487
488
489
490
491
492
493
494
495
496
  <div id="analysis_data" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #1D73DA">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#1D73DA;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>analysis_data</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_analysis_data" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('analysis_data','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
497
    </div>
498
    <div style="clear:both"></div>
499
  </div>
500
501
502
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">A generic blob-storage hash. Currently the only legitimate use of this table is "overflow" of job.input_ids: when they grow longer than 254 characters the real data is stored in analysis_data instead, and the input_id contains the corresponding analysis_data_id.</p>

  <div id="div_analysis_data" style="display:none">
503
504
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
505
      <tr class="bg1"><td><b>analysis_data_id</b></td><td>INTEGER</td><td>-</td><td>primary id</td><td></td></tr>
506
      <tr class="bg2"><td><b>data</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>text blob which holds the data</td><td>key: data(100)</td></tr>
507
508
509
    </table>
  </div>

510
511
512
513

<div style="background-color:#F4F4F4;padding:5px 4px;margin:75px 0px 5px;border-top:2px solid #24DA06;border-bottom:1px solid #24DA06">
  <div id="4" style="background-color:#24DA06;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:top"></div>
  <h2 id="4" style="display:inline;color:#000;padding-top:0px;margin-left:6px">execution tables</h2>
514
515
</div>

516
517
518
519
520
521
522
523
524
525
  <div id="worker" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #24DA06">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#24DA06;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>worker</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_worker" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('worker','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
526
    </div>
527
    <div style="clear:both"></div>
528
  </div>
529
530
531
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Entries of this table correspond to Worker objects of the API. Workers are created by inserting into this table so that there is only one instance of a Worker object in the database. As Workers live and do work, they update this table, and when they die they update again.</p>

  <div id="div_worker" style="display:none">
532
533
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
534
535
      <tr class="bg1"><td><b>worker_id</b></td><td>INTEGER</td><td>-</td><td>unique ID of the Worker</td><td></td></tr>
      <tr class="bg2"><td><b>meadow_type</b></td><td>VARCHAR(255)</td><td>-</td><td>type of the Meadow it is running on</td><td>key: meadow_process</td></tr>
536
537
538
539
540
541
542
543
544
545
546
      <tr class="bg1"><td><b>meadow_name</b></td><td>VARCHAR(255)</td><td>-</td><td>name of the Meadow it is running on (for meadow_type=='LOCAL' it is the same as meadow_host)</td><td>key: meadow_process</td></tr>
      <tr class="bg2"><td><b>meadow_host</b></td><td>VARCHAR(255)</td><td>-</td><td>execution host name</td><td></td></tr>
      <tr class="bg1"><td><b>meadow_user</b></td><td>VARCHAR(255)</td><td>NULL</td><td>scheduling/execution user name (within the Meadow)</td><td></td></tr>
      <tr class="bg2"><td><b>process_id</b></td><td>VARCHAR(255)</td><td>-</td><td>identifies the Worker process on the Meadow (for 'LOCAL' is the OS PID)</td><td>key: meadow_process</td></tr>
      <tr class="bg1"><td><b>resource_class_id</b></td><td>INTEGER</td><td>NULL</td><td>links to Worker's resource class</td><td></td></tr>
      <tr class="bg2"><td><b>work_done</b></td><td>INTEGER</td><td>0</td><td>how many jobs the Worker has completed successfully</td><td></td></tr>
      <tr class="bg1"><td><b>status</b></td><td>ENUM('SPECIALIZATION','COMPILATION','READY','PRE_CLEANUP','FETCH_INPUT','RUN','WRITE_OUTPUT','POST_CLEANUP','DEAD')</td><td>'READY'</td><td>current status of the Worker</td><td></td></tr>
      <tr class="bg2"><td><b>when_born</b></td><td>TIMESTAMP</td><td>CURRENT_TIMESTAMP</td><td>when the Worker process was started</td><td></td></tr>
      <tr class="bg1"><td><b>when_checked_in</b></td><td>TIMESTAMP</td><td>NULL</td><td>when the Worker last checked into the database</td><td></td></tr>
      <tr class="bg2"><td><b>when_seen</b></td><td>TIMESTAMP</td><td>NULL</td><td>when the Worker was last seen by the Meadow</td><td></td></tr>
      <tr class="bg1"><td><b>when_died</b></td><td>TIMESTAMP</td><td>NULL</td><td>if defined, when the Worker died (or its premature death was first detected by GC)</td><td></td></tr>
547
548
      <tr class="bg2"><td><b>cause_of_death</b></td><td>ENUM('NO_ROLE', 'NO_WORK', 'JOB_LIMIT', 'HIVE_OVERLOAD', 'LIFESPAN', 'CONTAMINATED', 'RELOCATED', 'KILLED_BY_USER', 'MEMLIMIT', 'RUNLIMIT', 'SEE_MSG', 'UNKNOWN')</td><td>NULL</td><td>if defined, why did the Worker exit (or why it was killed)</td><td></td></tr>
      <tr class="bg1"><td><b>log_dir</b></td><td>VARCHAR(255)</td><td>NULL</td><td>if defined, a filesystem directory where this Worker's output is logged</td><td></td></tr>
549
550
551
    </table>
  </div>

552
553
554
555
556
557
558
559
560
561
  <div id="role" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #24DA06">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#24DA06;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>role</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_role" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('role','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
562
    </div>
563
    <div style="clear:both"></div>
564
565
566
567
568
569
  </div>
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">Entries of this table correspond to Role objects of the API. When a Worker specializes, it acquires a Role, which is a temporary link between the Worker and a resource-compatible Analysis.</p>

  <div id="div_role" style="display:none">
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
570
571
572
      <tr class="bg1"><td><b>role_id</b></td><td>INTEGER</td><td>-</td><td>unique ID of the Role</td><td></td></tr>
      <tr class="bg2"><td><b>worker_id</b></td><td>INTEGER</td><td>-</td><td>the specialized Worker</td><td>key: worker</td></tr>
      <tr class="bg1"><td><b>analysis_id</b></td><td>INTEGER</td><td>-</td><td>the Analysis into which the Worker specialized</td><td>key: analysis</td></tr>
573
      <tr class="bg2"><td><b>when_started</b></td><td>TIMESTAMP</td><td>CURRENT_TIMESTAMP</td><td>when this Role started</td><td></td></tr>
574
      <tr class="bg1"><td><b>when_finished</b></td><td>TIMESTAMP</td><td>NULL</td><td>when this Role finished. NULL may either indicate it is still running or was killed by an external force.</td><td></td></tr>
575
576
577
578
579
      <tr class="bg2"><td><b>attempted_jobs</b></td><td>INTEGER</td><td>0</td><td>counter of the number of attempts</td><td></td></tr>
      <tr class="bg1"><td><b>done_jobs</b></td><td>INTEGER</td><td>0</td><td>counter of the number of successful attempts</td><td></td></tr>
    </table>
  </div>

580
581
582
583

<div style="background-color:#F4F4F4;padding:5px 4px;margin:75px 0px 5px;border-top:2px solid #F4D20C;border-bottom:1px solid #F4D20C">
  <div id="5" style="background-color:#F4D20C;box-shadow:1px 1px 2px #888;padding:0px 8px;display:inline;vertical-align:top"></div>
  <h2 id="5" style="display:inline;color:#000;padding-top:0px;margin-left:6px">Logging and monitoring</h2>
584
585
</div>

586
587
588
589
590
591
592
593
594
595
  <div id="worker_resource_usage" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #F4D20C">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#F4D20C;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>worker_resource_usage</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_worker_resource_usage" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('worker_resource_usage','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
596
    </div>
597
    <div style="clear:both"></div>
598
599
600
601
602
603
  </div>
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">A table with post-mortem resource usage statistics of a Worker.</p>

  <div id="div_worker_resource_usage" style="display:none">
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
604
      <tr class="bg1"><td><b>worker_id</b></td><td>INTEGER</td><td>-</td><td>links to the worker table</td><td>primary key</td></tr>
605
606
607
608
609
610
611
      <tr class="bg2"><td><b>exit_status</b></td><td>VARCHAR(255)</td><td>NULL</td><td>meadow-dependent, in case of LSF it's usually 'done' (normal) or 'exit' (abnormal)</td><td></td></tr>
      <tr class="bg1"><td><b>mem_megs</b></td><td>FLOAT</td><td>NULL</td><td>how much memory the Worker process used</td><td></td></tr>
      <tr class="bg2"><td><b>swap_megs</b></td><td>FLOAT</td><td>NULL</td><td>how much swap the Worker process used</td><td></td></tr>
      <tr class="bg1"><td><b>pending_sec</b></td><td>FLOAT</td><td>NULL</td><td>time spent by the process in the queue before it became a Worker</td><td></td></tr>
      <tr class="bg2"><td><b>cpu_sec</b></td><td>FLOAT</td><td>NULL</td><td>cpu time used by the Worker process</td><td></td></tr>
      <tr class="bg1"><td><b>lifespan_sec</b></td><td>FLOAT</td><td>NULL</td><td>walltime used by the Worker process</td><td></td></tr>
      <tr class="bg2"><td><b>exception_status</b></td><td>VARCHAR(255)</td><td>NULL</td><td>meadow-specific flags, in case of LSF it can be 'underrun', 'overrun' or 'idle'</td><td></td></tr>
612
613
614
    </table>
  </div>

615
616
617
618
619
620
621
622
623
624
  <div id="log_message" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #F4D20C">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#F4D20C;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>log_message</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_log_message" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('log_message','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
625
    </div>
626
    <div style="clear:both"></div>
627
  </div>
628
629
630
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">When a Job or a job-less Worker (job_id=NULL) throws a "die" message for any reason, the message is recorded in this table. It may or may not indicate that the job was unsuccessful via is_error flag. Also $self->warning("...") messages are recorded with is_error=0.</p>

  <div id="div_log_message" style="display:none">
631
632
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
633
      <tr class="bg1"><td><b>log_message_id</b></td><td>INTEGER</td><td>-</td><td>an autoincremented primary id of the message</td><td></td></tr>
634
      <tr class="bg2"><td><b>job_id</b></td><td>INTEGER</td><td>NULL</td><td>the id of the job that threw the message (or NULL if it was outside of a message)</td><td>key: job_id</td></tr>
635
636
      <tr class="bg1"><td><b>role_id</b></td><td>INTEGER</td><td>NULL</td><td>the 'current' role</td><td></td></tr>
      <tr class="bg2"><td><b>worker_id</b></td><td>INTEGER</td><td>NULL</td><td>the 'current' worker</td><td>key: worker_id</td></tr>
637
      <tr class="bg1"><td><b>when_logged</b></td><td>TIMESTAMP</td><td>CURRENT_TIMESTAMP</td><td>when the message was thrown</td><td></td></tr>
638
639
      <tr class="bg2"><td><b>retry</b></td><td>INTEGER</td><td>NULL</td><td>retry_count of the job when the message was thrown (or NULL if no job)</td><td></td></tr>
      <tr class="bg1"><td><b>status</b></td><td>ENUM('UNKNOWN','SPECIALIZATION','COMPILATION','CLAIMED','READY','PRE_CLEANUP','FETCH_INPUT','RUN','WRITE_OUTPUT','POST_CLEANUP','PASSED_ON')</td><td>'UNKNOWN'</td><td>of the job or worker when the message was thrown</td><td></td></tr>
640
      <tr class="bg2"><td><b>msg</b></td><td>MEDIUMTEXT</td><td>NULL</td><td>string that contains the message</td><td></td></tr>
641
      <tr class="bg1"><td><b>is_error</b></td><td>SMALLINT</td><td>NULL</td><td>binary flag</td><td></td></tr>
642
643
644
    </table>
  </div>

645
646
647
648
649
650
651
652
653
654
  <div id="analysis_stats_monitor" style="width:850px;background-color:#F4F4F4;border-bottom:1px solid #BBB;margin-top:60px;margin-bottom:2px;padding:4px;border-top:1px solid #F4D20C">
 
    <div style="float:left;text-align:left;font-size:11pt;font-weight:bold;color:#000;padding:2px 1px">
      <span style="display:inline-block;height:10px;width:10px;border-radius:5px;margin-right:5px;background-color:#F4D20C;box-shadow:1px 1px 2px #888;vertical-align:middle"></span>analysis_stats_monitor</div>
    <div style="float:right;text-align:right;padding:2px 1px">
  
  <a id="a_analysis_stats_monitor" class="help-header" style="cursor:pointer;font-weight:bold;border-radius:5px;background-color:#FFF;border:1px solid #667aa6;padding:1px 2px;margin-right:5px" onclick="show_hide('analysis_stats_monitor','columns')">
    <img src="/i/16/plus-button.png" style="width:12px;height:12px;position:relative;top:2px" alt="show"/> Show columns
  </a>
      <span style="margin-right:5px;border-right:1px solid #000"> </span> <a href="#top" style="text-decoration:none">[Back to top]</a>
655
    </div>
656
    <div style="clear:both"></div>
657
  </div>
658
659
660
  <p style="padding:5px 0px;margin-bottom:0px;width:800px">A regular timestamped snapshot of the analysis_stats table.</p>

  <div id="div_analysis_stats_monitor" style="display:none">
661
662
    <table style="border:1px solid #667aa6;padding:0px;min-width:1000px;max-width:1200px">
      <tr class="center" style="color:#FFFFFF;background-color:#667aa6"><th style="color:#FFF;padding:2px">Column</th><th style="color:#FFF;padding:2px">Type</th><th style="color:#FFF;padding:2px;min-width:80px">Default value</th><th style="color:#FFF;padding:2px;min-width:500px">Description</th><th style="color:#FFF;padding:2px;min-width:100px">Index</th></tr>
663
      <tr class="bg1"><td><b>when_logged</b></td><td>TIMESTAMP</td><td>CURRENT_TIMESTAMP</td><td>when this snapshot was taken</td><td></td></tr>
664
      <tr class="bg2"><td><b>analysis_id</b></td><td>INTEGER</td><td>-</td><td>foreign-keyed to the corresponding analysis_base entry</td><td></td></tr>
665
666
667
668
669
670
671
672
673
      <tr class="bg1"><td><b>batch_size</b></td><td>INTEGER</td><td>1</td><td>how many jobs are claimed in one claiming operation before Worker starts executing them</td><td></td></tr>
      <tr class="bg2"><td><b>hive_capacity</b></td><td>INTEGER</td><td>NULL</td><td>a reciprocal limiter on the number of Workers running at the same time (dependent on Workers of other Analyses)</td><td></td></tr>
      <tr class="bg1"><td><b>status</b></td><td>ENUM('BLOCKED', 'LOADING', 'SYNCHING', 'EMPTY', 'READY', 'WORKING', 'ALL_CLAIMED', 'DONE', 'FAILED')</td><td>'EMPTY'</td><td>cached state of the Analysis</td><td></td></tr>
      <tr class="bg2"><td><b>total_job_count</b></td><td>INTEGER</td><td>0</td><td>total number of Jobs of this Analysis</td><td></td></tr>
      <tr class="bg1"><td><b>semaphored_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in SEMAPHORED state</td><td></td></tr>
      <tr class="bg2"><td><b>ready_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in READY state</td><td></td></tr>
      <tr class="bg1"><td><b>done_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in DONE state</td><td></td></tr>
      <tr class="bg2"><td><b>failed_job_count</b></td><td>INTEGER</td><td>0</td><td>number of Jobs of this Analysis that are in FAILED state</td><td></td></tr>
      <tr class="bg1"><td><b>num_running_workers</b></td><td>INTEGER</td><td>0</td><td>number of running Workers of this Analysis</td><td></td></tr>
674
675
676
677
678
679
680
681
682
      <tr class="bg2"><td><b>behaviour</b></td><td>ENUM('STATIC', 'DYNAMIC')</td><td>'STATIC'</td><td>whether hive_capacity is set or is dynamically calculated based on timers</td><td></td></tr>
      <tr class="bg1"><td><b>input_capacity</b></td><td>INTEGER</td><td>4</td><td>used to compute hive_capacity in DYNAMIC mode</td><td></td></tr>
      <tr class="bg2"><td><b>output_capacity</b></td><td>INTEGER</td><td>4</td><td>used to compute hive_capacity in DYNAMIC mode</td><td></td></tr>
      <tr class="bg1"><td><b>avg_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg2"><td><b>avg_input_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg1"><td><b>avg_run_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg2"><td><b>avg_output_msec_per_job</b></td><td>INTEGER</td><td>NULL</td><td>weighted average used to compute DYNAMIC hive_capacity</td><td></td></tr>
      <tr class="bg1"><td><b>when_updated</b></td><td>TIMESTAMP</td><td>NULL</td><td>when this entry was last updated</td><td></td></tr>
      <tr class="bg2"><td><b>sync_lock</b></td><td>SMALLINT</td><td>-</td><td>a binary lock flag to prevent simultaneous updates</td><td></td></tr>
683
684
685
686
687
688
    </table>
  </div>


</body>
</html>