public void PutNewDocInTxCommitAndThenGetIt() { var transactionInformation = new TransactionInformation { Id = Guid.NewGuid(), Timeout = TimeSpan.FromMinutes(1) }; db.Put("ayende", null, RavenJObject.Parse("{ayende:'rahien'}"), new RavenJObject(), transactionInformation); db.Commit(transactionInformation.Id); Assert.NotNull(db.Get("ayende", null)); }
public void DeletingDocumentAndThenAddingDocumentInSameTransactionCanWork() { db.Put("ayende", null, RavenJObject.Parse("{ayende:'oren'}"), new RavenJObject(), null); var transactionInformation = new TransactionInformation { Id = Guid.NewGuid(), Timeout = TimeSpan.FromMinutes(1) }; db.Delete("ayende", null, transactionInformation); db.Put("ayende", null, RavenJObject.Parse("{ayende:'rahien'}"), new RavenJObject(), transactionInformation); db.Commit(transactionInformation.Id); Assert.Equal("rahien", db.Get("ayende", null).ToJson()["ayende"].Value <string>()); }
public void PutNewDocInTxCommitAndThenGetIt() { EnsureDtcIsSupported(db); var transactionInformation = new TransactionInformation { Id = Guid.NewGuid().ToString(), Timeout = TimeSpan.FromMinutes(1) }; db.Documents.Put("ayende", null, RavenJObject.Parse("{ayende:'rahien'}"), new RavenJObject(), transactionInformation); db.PrepareTransaction(transactionInformation.Id); db.Commit(transactionInformation.Id); Assert.NotNull(db.Documents.Get("ayende", null)); }
public void WhenUsingTransactionWillWorkIfDocumentEtagMatch() { db.Put("ayende", null, RavenJObject.Parse("{ayende:'oren'}"), new RavenJObject(), null); var doc = db.Get("ayende", null); var transactionInformation = new TransactionInformation { Id = Guid.NewGuid(), Timeout = TimeSpan.FromMinutes(1) }; db.Put("ayende", doc.Etag, RavenJObject.Parse("{ayende:'rahien'}"), new RavenJObject(), transactionInformation); db.Commit(transactionInformation.Id); Assert.Equal("rahien", db.Get("ayende", null).ToJson()["ayende"].Value <string>()); }
public void PutTwoDocumentsAndThenCommit() { var transactionInformation = new TransactionInformation { Id = Guid.NewGuid(), Timeout = TimeSpan.FromMinutes(1) }; db.Put("ayende1", null, JObject.Parse("{ayende:'rahien'}"), new JObject(), transactionInformation); db.Put("ayende2", null, JObject.Parse("{ayende:'rahien'}"), new JObject(), transactionInformation); db.Commit(transactionInformation.Id); Assert.NotNull(db.Get("ayende1", null)); Assert.NotNull(db.Get("ayende2", null)); }
private void ActivatePendingDocuments() { using (_database.DisableAllTriggersForCurrentThread()) { var revisionKeys = PendingRevisionsIndex.GetRevisionsRequiringActivation(_database); foreach (var revisionkey in revisionKeys) { _log.Info("Activating Temporal Document {0}", revisionkey); // Establish a new transaction var transactionInformation = new TransactionInformation { Id = Guid.NewGuid().ToString(), Timeout = TimeSpan.FromMinutes(1) }; // Get the current key from the revision key var currentKey = revisionkey.Substring(0, revisionkey.IndexOf(TemporalConstants.TemporalKeySeparator, StringComparison.Ordinal)); // Mark the document as non-pending _database.SetDocumentMetadata(revisionkey, transactionInformation, TemporalMetadata.RavenDocumentTemporalPending, false); // Mark it in the history also Etag historyEtag; var history = _database.GetTemporalHistoryFor(currentKey, transactionInformation, out historyEtag); history.Revisions.First(x => x.Key == revisionkey).Pending = false; _database.SaveTemporalHistoryFor(currentKey, history, transactionInformation, historyEtag); // Load the new revisions document var newRevisionDoc = _database.Get(revisionkey, transactionInformation); var temporal = newRevisionDoc.Metadata.GetTemporalMetadata(); if (temporal.Deleted) { // When the revision is a deletion, delete the current document _database.Delete(currentKey, null, transactionInformation); } else { // Prepare the current document metadata newRevisionDoc.Metadata.Remove(TemporalMetadata.RavenDocumentTemporalDeleted); newRevisionDoc.Metadata.Remove(TemporalMetadata.RavenDocumentTemporalPending); newRevisionDoc.Metadata.Remove("@id"); temporal.Status = TemporalStatus.Current; temporal.RevisionNumber = int.Parse(newRevisionDoc.Key.Split('/').Last()); // Copy the revision to the current document _database.Put(currentKey, null, newRevisionDoc.DataAsJson, newRevisionDoc.Metadata, transactionInformation); } // Commit the transaction _database.Commit(transactionInformation.Id); } } }
private void SetupReplication() { if (RoleEnvironment.CurrentRoleInstance.Role.Instances.Count < 2) { var tr = new TransactionInformation(); _database.Put("Debug", null, JObject.Parse(@"{""Url"":""" + GetEndPointAddress(MyInstanceEndpoint.IPEndpoint) + @"""}"), new JObject(), tr); _database.Commit(tr.Id); } else { var json = BuildDestinationsString(); Trace.WriteLine(json); var tr = new TransactionInformation(); _database.Delete("Raven/Replication/Destinations", null, tr); _database.Put("Raven/Replication/Destinations", null, JObject.Parse(json), new JObject(), tr); _database.Commit(tr.Id); } }
public void Commit(Enlistment enlistment) { database.Commit(txId); enlistment.Done(); }
/// <summary> /// Commits the specified tx id. /// </summary> /// <param name="txId">The tx id.</param> public void Commit(Guid txId) { CurrentOperationContext.Headers.Value = OperationsHeaders; database.Commit(txId); }
public void Commit(Enlistment enlistment) { database.Commit(transactionId); enlistment.Done(); }
public void Commit(Guid txId) { database.Commit(txId); }
public void Commit(Guid txId) { CurrentRavenOperation.Headers.Value = OperationsHeaders; database.Commit(txId); }