anchor.diff:      {ResultProps} = couch_rep_httpc:request(Req),
       true = proplists:get_value(<<"ok">>, ResultProps),
       proplists:get_value(<<"instance_start_time">>, ResultProps);
  -ensure_full_commit(Db) ->
  -    {ok, NewDb} = couch_db:open(Db#db.name, []),
  -    UpdateSeq = couch_db:get_update_seq(Db),
  +ensure_full_commit(Target) ->
  +    {ok, NewDb} = couch_db:open(Target#db.name, []),
  +    UpdateSeq = couch_db:get_update_seq(Target),
       CommitSeq = couch_db:get_committed_update_seq(NewDb),
       InstanceStartTime = NewDb#db.instance_start_time,
       couch_db:close(NewDb),
       if UpdateSeq > CommitSeq ->
           ?LOG_DEBUG("replication needs a full commit: update ~p commit ~p",
               [UpdateSeq, CommitSeq]),
  -        {ok, NewTime} = couch_db:ensure_full_commit(Db),
  -        NewTime;
  +        {ok, DbStartTime} = couch_db:ensure_full_commit(Target),
  +        DbStartTime;
       true ->
           ?LOG_DEBUG("replication doesn't need a full commit", []),
  +        InstanceStartTime
  +    end.
  +
  +ensure_full_commit(#http_db{} = Source, RequiredSeq) ->
  +    Req = Source#http_db{
  +        resource = "_ensure_full_commit",
  +        method = post,
  +        body = true,
  +        qs = [{seq, RequiredSeq}]
  +    },
  +    {ResultProps} = couch_rep_httpc:request(Req),
  +    case proplists:get_value(<<"ok">>, ResultProps) of
  +    true ->
  +        proplists:get_value(<<"instance_start_time">>, ResultProps);
  +    undefined -> nil end;
  +ensure_full_commit(Source, RequiredSeq) ->
  +    {ok, NewDb} = couch_db:open(Source#db.name, []),
  +    CommitSeq = couch_db:get_committed_update_seq(NewDb),
  +    InstanceStartTime = NewDb#db.instance_start_time,
  +    couch_db:close(NewDb),
  +    if RequiredSeq > CommitSeq ->
  +        {ok, DbStartTime} = couch_db:ensure_full_commit(Source),
  +        DbStartTime;
  +    true ->
           InstanceStartTime
       end.
   
  
positive.code:     end,
      {SourceStartTime, TargetStartTime}.
      
  ensure_full_commit(#http_db{} = Db) ->
      Req = Db#http_db{
          resource = "_ensure_full_commit",
          method = post,
          body = true
  
negative.code:         stats = Stats
      } = State,
      ?LOG_INFO("recording a checkpoint at source update_seq ~p", [NewSeqNum]),
      RecordSeqNum = case commit_to_both(Source, Target, NewSeqNum) of
      {SrcInstanceStartTime, TgtInstanceStartTime} ->
          NewSeqNum;
      _Else ->
  