/// <summary> /// Prepares writeback settings to write to Couchbase /// </summary> /// <param name="request"></param> /// <param name="context"></param> /// <returns></returns> public override async Task <PrepareWriteResponse> PrepareWrite(PrepareWriteRequest request, ServerCallContext context) { Logger.SetLogPrefix(request.DataVersions.JobId); Logger.Info("Preparing write..."); _server.WriteConfigured = false; _server.WriteSettings = new WriteSettings { CommitSLA = request.CommitSlaSeconds, Schema = request.Schema, Replication = request.Replication, DataVersions = request.DataVersions, }; if (_server.WriteSettings.IsReplication()) { try { // reconcile job Logger.Info($"Starting to reconcile Replication Job {request.DataVersions.JobId}"); await Replication.ReconcileReplicationJob(_clusterFactory, request); Logger.Info($"Finished reconciling Replication Job {request.DataVersions.JobId}"); } catch (Exception e) { Logger.Error(e, e.Message, context); return(new PrepareWriteResponse()); } } _server.WriteConfigured = true; Logger.Debug(JsonConvert.SerializeObject(_server.WriteSettings, Formatting.Indented)); Logger.Info("Write prepared."); return(new PrepareWriteResponse()); }