Skip to content

Commit 141102f

Browse files
committed
avoiding locking issues with save events
1 parent d4138e3 commit 141102f

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

core/Services/ContentService.cs

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1320,6 +1320,27 @@ public void UpdatePathRelatedMeta(string oldPath, string newPath,bool save=true)
13201320

13211321
}
13221322
public async Task<SaveResult> SaveContent<T>(T mod, bool makeRevision = true, string userName = null, bool handleNodeNameExists = true, int nodeNameExistsCounter = 0, bool triggerEvents = true, bool triggerIndexEvents = true, bool shouldIndex = true, bool alwaysUpdatePath = true, bool queueIfIndexerBusy = false) where T : BaseModel
1323+
{
1324+
if (triggerEvents)
1325+
{
1326+
var beforeArgs = new BeforeIndexingEventArgs { Node = mod };
1327+
OnBeforeSave(this, beforeArgs);
1328+
if (beforeArgs.Cancel)
1329+
throw new SaveCancelledException("Saving was cancelled by a custom event handler");
1330+
}
1331+
1332+
var returnValue = await DoSaveContent<T>(mod, makeRevision, userName, handleNodeNameExists, nodeNameExistsCounter, triggerEvents, triggerIndexEvents, shouldIndex, alwaysUpdatePath, queueIfIndexerBusy);
1333+
1334+
if (triggerEvents)
1335+
{
1336+
var afterArgs = new IndexingEventArgs { Node = mod };
1337+
OnAfterSave(this, afterArgs);
1338+
}
1339+
1340+
return returnValue;
1341+
}
1342+
1343+
private async Task<SaveResult> DoSaveContent<T>(T mod, bool makeRevision = true, string userName = null, bool handleNodeNameExists = true, int nodeNameExistsCounter = 0, bool triggerEvents = true, bool triggerIndexEvents = true, bool shouldIndex = true, bool alwaysUpdatePath = true, bool queueIfIndexerBusy = false) where T : BaseModel
13231344
{
13241345
if (nodeNameExistsCounter == 0)
13251346
await slock1.WaitAsync();
@@ -1385,13 +1406,7 @@ public async Task<SaveResult> SaveContent<T>(T mod, bool makeRevision = true, st
13851406
//set sort order for new content
13861407
if (mod.SortOrder == -1)
13871408
mod.SortOrder = nodesAtPath.Count();
1388-
if (triggerEvents)
1389-
{
1390-
var beforeArgs = new BeforeIndexingEventArgs { Node = mod };
1391-
OnBeforeSave(this, beforeArgs);
1392-
if (beforeArgs.Cancel)
1393-
throw new SaveCancelledException("Saving was cancelled by a custom event handler");
1394-
}
1409+
//beforesave event was triggered here
13951410
var revisions = repo.GetPuckRevision().Where(x => x.Id.Equals(mod.Id) && x.Variant.ToLower().Equals(mod.Variant.ToLower()));
13961411

13971412
mod.Updated = DateTime.Now;
@@ -1908,11 +1923,7 @@ void _SetPath()
19081923
if (shouldIndex)
19091924
AddPublishInstruction(result.ItemsToIndex, save: true);
19101925

1911-
if (triggerEvents)
1912-
{
1913-
var afterArgs = new IndexingEventArgs { Node = mod };
1914-
OnAfterSave(this, afterArgs);
1915-
}
1926+
//aftersave was triggered here
19161927

19171928
if (shouldUpdateDomainMappings)
19181929
StateHelper.UpdateDomainMappings(true);

0 commit comments

Comments
 (0)