question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Exception in BPlusTree

See original GitHub issue

See #4992, one that issue was fixed, the following happened:

System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. 
Parameter name: length
 at CSharpTest.Net.IO.TransactedCompoundFile.Write(UInt32 handle, Byte[] bytes, Int32 offset, Int32 length)
 at CSharpTest.Net.Storage.BTreeFileStoreV2.Update[T](IStorageHandle handleIn, ISerializer`1 serializer, T node)
 at CSharpTest.Net.Collections.BPlusTree`2.StorageCache.OnItemRemoved(KeyValuePair`2 item)
 at CSharpTest.Net.Collections.LurchTable`2.TryDequeue(Predicate`1 predicate, KeyValuePair`2& value)
 at CSharpTest.Net.Collections.BPlusTree`2.StorageCache.Flush()
 at CSharpTest.Net.Collections.BPlusTree`2.StorageCache.Commit()
 at CSharpTest.Net.Collections.BPlusTree`2.CommitChanges(Boolean requiresLock)
 at Umbraco.Web.PublishedCache.NuCache.ContentStore.Release(WriteLockInfo lockInfo, Boolean commit)
 at Umbraco.Web.PublishedCache.NuCache.ContentStore.Set(ContentNodeKit kit)
 at Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService.NotifyLocked(IEnumerable`1 payloads, Boolean& draftChanged, Boolean& publishedChanged)
 at Umbraco.Web.PublishedCache.NuCache.PublishedSnapshotService.Notify(JsonPayload[] payloads, Boolean& draftChanged, Boolean& publishedChanged)
 at Umbraco.Web.Cache.ContentCacheRefresher.Refresh(JsonPayload[] payloads)
 at Umbraco.Core.Sync.ServerMessengerBase.DeliverLocal[TPayload](ICacheRefresher refresher, TPayload[] payload)
 at Umbraco.Core.Sync.ServerMessengerBase.Deliver[TPayload](ICacheRefresher refresher, TPayload[] payload)
 at Umbraco.Core.Sync.ServerMessengerBase.PerformRefresh[TPayload](ICacheRefresher refresher, TPayload[] payload)
 at Umbraco.Web.Cache.DistributedCache.RefreshByPayload[TPayload](Guid refresherGuid, IEnumerable`1 payloads)
 at Umbraco.Web.Cache.DistributedCacheExtensions.RefreshContentCache(DistributedCache dc, TreeChange`1[] changes)
 at Umbraco.Web.Cache.DistributedCacheBinder.ContentService_TreeChanged(IContentService sender, EventArgs args)
 at Umbraco.Core.Events.EventDefinition`2.RaiseEvent()
 at Umbraco.Core.Events.QueuingEventDispatcher.ScopeExitCompleted()
 at Umbraco.Core.Events.QueuingEventDispatcherBase.ScopeExit(Boolean completed)
 at Umbraco.Core.Scoping.Scope.<>c__DisplayClass72_0.<RobustExit>b__1()
 at Umbraco.Core.Scoping.Scope.TryFinally(Int32 index, Action[] actions)
 at Umbraco.Core.Scoping.Scope.TryFinally(Int32 index, Action[] actions)
 at Umbraco.Core.Scoping.Scope.RobustExit(Boolean completed, Boolean onException)
 at Umbraco.Core.Scoping.Scope.DisposeLastScope()
 at Umbraco.Core.Scoping.Scope.Dispose()
 at Umbraco.Core.Services.Implement.ContentService.SaveAndPublish(IContent content, String culture, Int32 userId, Boolean raiseEvents)
 at cmdportal.com.Controllers.ContentController.ImportArticle(Object objarticle) 
 in C:\CMDSVN\Websites\Controllers\ContentController.cs:line 1459

Issue Analytics

  • State:closed
  • Created 5 years ago
  • Comments:25 (13 by maintainers)

github_iconTop GitHub Comments

1reaction
zpqrtbnkcommented, Apr 3, 2019

Many thanks for testing! Next steps:

  • this solution is going to be merged into the next release, with a comment to indicate that the cache must be rebuilt whenever the block size is changed
  • I’ll create a longer-term issue to deal with it in a friendlier way - as you wrote, this should be automatic
1reaction
zpqrtbnkcommented, Mar 29, 2019

Turns out the file storage we are using has a block size that can be configured. I have created PR #5111 which adds a new app setting:

<add key="Umbraco.Web.PublishedCache.NuCache.BTree.BlockSize" value="4096" />

The default value is 4096 but you can use greater values - you have to use powers of two, lower than or equal to 65536 - so 8192, 16384, 32768 or 65536.

Don’t know if you are comfortable building from a PR and testing? Want to try with differerent values and see if a value is ok for you? Bearing in mind that I’d go with the smallest value that fits.

Read more comments on GitHub >

github_iconTop Results From Across the Web

Large Content Error - Exception in BPlusTree · Issue #8447
Large Content Error - Exception in BPlusTree #8447. Closed. benjaminc opened this issue on Jul 15, 2020 · 8 comments.
Read more >
C# test.net » BPlusTree - CSharpTest.Net
Those exceptions are diagnostics methods like Print, and Validate, as well as the methods EnableCount, Clear, and UnloadCache. All of these methods may...
Read more >
B+ Tree split bug - java
So when I search for those values I cannot find them or when I go to add a value that would follow that...
Read more >
B+Tree Corrupted exception when using a key extracted ...
B+Tree Corrupted exception when using a key extracted from a BinaryObject value object --- and SQL enabled. Status: Assignee: Priority:.
Read more >
[#IGNITE-15961] CacheGroupKeyChangeTest# ...
corruptedTreeException(BPlusTree.java:6162) [21:15:45]W: [org.apache.ignite:ignite-core] at org.apache.ignite.internal.processors.cache.persistence.tree.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found