blob: ad76aeadf35ef45a145d74875cee5741d2f28e59 [file] [log] [blame]
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
% License for the specific language governing permissions and limitations under
% the License.
-include_lib("mem3/include/mem3.hrl").
-type range_pos() :: non_neg_integer().
-type split() :: pos_integer().
-type job_id() :: binary() | undefined.
-type job_type() :: split.
-type time_sec() :: non_neg_integer().
-type shard_split_main_state() ::
running |
stopped.
-type job_state() ::
new |
running |
stopped |
failed |
completed.
-type split_state() ::
new |
initial_copy |
topoff1 |
build_indices |
topoff2 |
copy_local_docs |
update_shardmap |
wait_source_close |
topoff3 |
source_delete |
completed.
-record(job, {
id :: job_id() | '$1' | '_',
type :: job_type(),
job_state :: job_state(),
split_state :: split_state(),
state_info = [] :: [{atom(), any()}],
source :: #shard{},
target :: [#shard{}],
history = [] :: [{atom(), time_sec()}],
start_time = 0 :: non_neg_integer(),
update_time = 0 :: non_neg_integer(),
node :: node(),
pid :: undefined | pid() | '$1' | '_',
ref :: undefined | reference() | '_',
manager :: undefined | pid(),
workers = [] :: [pid()],
retries = 0 :: non_neg_integer()
}).
-record(state, {
state :: shard_split_main_state(),
state_info :: [],
update_time :: non_neg_integer(),
job_prefix :: binary(),
state_id :: binary(),
node :: node(),
db_monitor :: pid()
}).