diff options
author | Nick Vatamaniuc <vatamane@apache.org> | 2019-12-20 13:33:16 -0500 |
---|---|---|
committer | Nick Vatamaniuc <vatamane@apache.org> | 2019-12-22 00:54:58 -0500 |
commit | 6b2bbe8c52e4920da23b67270351cb682056f641 (patch) | |
tree | 8b859b3e96e2b0adb263cdab935c9bd92b6d91e6 | |
parent | 5c8e8822dcc5d7c6002467b2afd807fd76a751dd (diff) | |
download | couchdb-replicator-info-error-as-object.tar.gz |
Switch replicator "info" error message to be an objectreplicator-info-error-as-object
Instead of a string, null or object, it should now be only a null or an object.
-rw-r--r-- | src/couch_replicator/src/couch_replicator.erl | 5 | ||||
-rw-r--r-- | src/couch_replicator/src/couch_replicator_scheduler.erl | 6 | ||||
-rw-r--r-- | src/couch_replicator/src/couch_replicator_utils.erl | 5 |
3 files changed, 10 insertions, 6 deletions
diff --git a/src/couch_replicator/src/couch_replicator.erl b/src/couch_replicator/src/couch_replicator.erl index f3cd56489..510b878bd 100644 --- a/src/couch_replicator/src/couch_replicator.erl +++ b/src/couch_replicator/src/couch_replicator.erl @@ -250,8 +250,9 @@ info_from_doc(RepDb, {Props}) -> end end; failed -> - Info = get_value(<<"_replication_state_reason">>, Props, null), - {State0, Info, 1, StateTime}; + Info = get_value(<<"_replication_state_reason">>, Props, nil), + EJsonInfo = couch_replicator_utils:ejson_state_info(Info), + {State0, EJsonInfo, 1, StateTime}; _OtherState -> {null, null, 0, null} end, diff --git a/src/couch_replicator/src/couch_replicator_scheduler.erl b/src/couch_replicator/src/couch_replicator_scheduler.erl index d534973be..dde214130 100644 --- a/src/couch_replicator/src/couch_replicator_scheduler.erl +++ b/src/couch_replicator/src/couch_replicator_scheduler.erl @@ -1472,7 +1472,8 @@ t_job_summary_crashing_once() -> setup_jobs([Job]), Summary = job_summary(job1, ?DEFAULT_HEALTH_THRESHOLD_SEC), ?assertEqual(crashing, proplists:get_value(state, Summary)), - ?assertEqual(<<"some_reason">>, proplists:get_value(info, Summary)), + Info = proplists:get_value(info, Summary), + ?assertEqual({[{<<"error">>, <<"some_reason">>}]}, Info), ?assertEqual(0, proplists:get_value(error_count, Summary)) end). @@ -1487,7 +1488,8 @@ t_job_summary_crashing_many_times() -> setup_jobs([Job]), Summary = job_summary(job1, ?DEFAULT_HEALTH_THRESHOLD_SEC), ?assertEqual(crashing, proplists:get_value(state, Summary)), - ?assertEqual(<<"some_reason">>, proplists:get_value(info, Summary)), + Info = proplists:get_value(info, Summary), + ?assertEqual({[{<<"error">>, <<"some_reason">>}]}, Info), ?assertEqual(2, proplists:get_value(error_count, Summary)) end). diff --git a/src/couch_replicator/src/couch_replicator_utils.erl b/src/couch_replicator/src/couch_replicator_utils.erl index 856c1b581..5f608dee7 100644 --- a/src/couch_replicator/src/couch_replicator_utils.erl +++ b/src/couch_replicator/src/couch_replicator_utils.erl @@ -181,13 +181,14 @@ normalize_rep(#rep{} = Rep)-> ejson_state_info(nil) -> null; ejson_state_info(Info) when is_binary(Info) -> - Info; + {[{<<"error">>, Info}]}; ejson_state_info([]) -> null; % Status not set yet => null for compatibility reasons ejson_state_info([{_, _} | _] = Info) -> {Info}; ejson_state_info(Info) -> - couch_replicator_utils:rep_error_to_binary(Info). + ErrMsg = couch_replicator_utils:rep_error_to_binary(Info), + {[{<<"error">>, ErrMsg}]}. -ifdef(TEST). |