{"id":12991152,"name":"entityframeworkcore.sqlite.concurrency","ecosystem":"nuget","description":"Eliminates 'SQLITE_BUSY' / 'database is locked' errors in multi-threaded \n            Entity Framework Core apps. Provides automatic write serialization, 10x faster \n            bulk inserts, and true parallel reads for SQLite. A drop-in, high-performance, \n            thread-safe addition to Microsoft.EntityFrameworkCore.Sqlite in .NET 10.","homepage":"https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency","keywords_array":["sqlite","sqlite3","entity-framework-core","efcore","concurrency","thread-safe","multi-threading","database-locked","sqlite-busy","performance","bulk-insert","parallel-reads","write-ahead-logging","wal","dotnet-10","entity-framework","orm","database-provider","high-performance","async","transactions","locking","queue"],"namespace":null,"versions_count":5,"first_release_published_at":"2026-01-24T18:07:58.230Z","latest_release_published_at":"2026-05-02T19:04:19.903Z","latest_release_number":"10.0.4","last_synced_at":"2026-05-02T19:15:49.443Z","created_at":"2026-01-30T11:08:08.428Z","updated_at":"2026-05-02T19:16:07.574Z","registry_url":"https://www.nuget.org/packages/entityframeworkcore.sqlite.concurrency/","install_command":"Install-Package entityframeworkcore.sqlite.concurrency","documentation_url":null,"metadata":{"copyright":"© 2026 Cornerstone Code. All rights reserved.","license_info":{"type":"expression","text":"MIT","version":null},"license_url":"https://licenses.nuget.org/MIT","require_license_acceptance":false,"icon":"logo.png","readme":"README.md","repository":{"type":"git","url":"https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency.git","branch":"refs/heads/main","commit":"f4d8a0aaceb73d5cbd0a06219820e38ff0af3e89"},"development_dependency":false,"serviceable":false,"framework_assemblies":[],"package_types":[],"release_notes":"v10.0.3 — SQLITE_BUSY_SNAPSHOT fix, IDbContextFactory support, structured logging\n\nBUGS FIXED\n• SQLITE_BUSY_SNAPSHOT (extended code 517) now correctly restarts the full operation lambda\n  instead of retrying the same statement — the only correct fix for a stale WAL read snapshot.\n• Exponential backoff now uses full jitter ([baseDelay, 2×baseDelay]) to prevent thundering\n  herd when multiple threads contend simultaneously.\n• Cache=Shared in the connection string now throws ArgumentException at startup — it silently\n  broke WAL mode semantics in prior versions.\n• Invalid SqliteConcurrencyOptions values (MaxRetryAttempts ≤ 0, negative BusyTimeout, etc.)\n  now throw ArgumentOutOfRangeException at startup instead of silently misbehaving.\n\nNEW FEATURES\n• AddConcurrentSqliteDbContextFactory\u003cT\u003e — registers IDbContextFactory\u003cT\u003e with all concurrency\n  settings. Use this for Task.WhenAll, background services, Channel\u003cT\u003e consumers, and any\n  workload that creates concurrent database operations. DbContext is not thread-safe; the factory\n  pattern gives each concurrent flow its own independent instance.\n• Structured logging: pass ILoggerFactory (or let DI resolve it) to get Warning logs for\n  SQLITE_BUSY/SQLITE_BUSY_SNAPSHOT events, Error logs for SQLITE_LOCKED, and Debug logs for\n  BEGIN IMMEDIATE upgrades — all through your existing logging pipeline.\n• GetWalCheckpointStatusAsync — runs PRAGMA wal_checkpoint(PASSIVE) and returns a typed\n  WalCheckpointStatus with IsBusy, TotalWalFrames, CheckpointedFrames, and CheckpointProgress.\n  Call periodically to detect long-running readers blocking WAL reclamation before it degrades\n  read performance.\n• TryReleaseMigrationLockAsync — detects and optionally clears a stale __EFMigrationsLock\n  row left behind by a crashed migration process. Prevents indefinite blocking on Database.Migrate()\n  in multi-instance deployments.\n• SynchronousMode option — configures PRAGMA synchronous (Off / Normal / Full / Extra).\n  Default remains Normal (recommended for WAL: safe after app crash, fast writes).\n• UpgradeTransactionsToImmediate option — opt out of the BEGIN → BEGIN IMMEDIATE rewrite\n  if you manage write transactions explicitly yourself. Default remains true.\n\nNO BREAKING CHANGES — all existing call sites compile and behave correctly without modification.","dependency_summary":{"total_dependency_groups":1,"target_frameworks":["net10.0"],"total_dependencies":4}},"repo_metadata":{"id":334313576,"uuid":"1140792084","full_name":"CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency","owner":"CornerstoneCode","description":"High-performance EntityFrameworkCore.Sqlite extension for concurrent reads and writes. Fix EFCore SQLite \"database is locked\" and \"busy\" errors with 10x faster bulk inserts and parallel read scaling. The definitive thread-safe solution for SQLite performance and concurrency in dotnet","archived":false,"fork":false,"pushed_at":"2026-01-25T03:48:54.000Z","size":561,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-25T07:57:38.119Z","etag":null,"topics":["bulk-insert","concurrency","database-locking","database-provider","dotnet","dotnet-10","dotnet-core","dotnet-library","efcore","entity-framework","entity-framework-core","entityframeworkcore","high-performance","optimistic-concurrency","orm","performance","sqlite-busy","thread-safe","wal-mode"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CornerstoneCode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-23T19:10:04.000Z","updated_at":"2026-01-25T03:57:45.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency","commit_stats":null,"previous_names":["cornerstonecode/efcore.sqlite.concurrency"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CornerstoneCode%2FEntityFrameworkCore.Sqlite.Concurrency","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CornerstoneCode%2FEntityFrameworkCore.Sqlite.Concurrency/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CornerstoneCode%2FEntityFrameworkCore.Sqlite.Concurrency/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CornerstoneCode%2FEntityFrameworkCore.Sqlite.Concurrency/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CornerstoneCode","download_url":"https://codeload.github.com/CornerstoneCode/EntityFrameworkCore.Sqlite.Concurrency/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CornerstoneCode%2FEntityFrameworkCore.Sqlite.Concurrency/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32546400,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T12:25:33.646Z","status":"ssl_error","status_checked_at":"2026-05-02T12:24:51.733Z","response_time":132,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"repo_metadata_updated_at":"2026-05-02T19:16:07.574Z","dependent_packages_count":0,"downloads":427,"downloads_period":"total","dependent_repos_count":0,"rankings":{"downloads":52.864050096996266,"dependent_repos_count":6.18624298432235,"dependent_packages_count":16.526716675691556,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":25.19233658567006},"purl":"pkg:nuget/entityframeworkcore.sqlite.concurrency","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/nuget/entityframeworkcore.sqlite.concurrency","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/nuget/entityframeworkcore.sqlite.concurrency","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/nuget/entityframeworkcore.sqlite.concurrency/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2026-01-25T06:04:15.543Z","issues_count":0,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/CornerstoneCode%2FEntityFrameworkCore.Sqlite.Concurrency/issues","maintainers":[],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/entityframeworkcore.sqlite.concurrency/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/entityframeworkcore.sqlite.concurrency/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/entityframeworkcore.sqlite.concurrency/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/entityframeworkcore.sqlite.concurrency/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/entityframeworkcore.sqlite.concurrency/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/packages/entityframeworkcore.sqlite.concurrency/codemeta","maintainers":[{"uuid":"mike.gotfryd","login":"mike.gotfryd","name":null,"email":null,"url":null,"packages_count":1,"html_url":"https://www.nuget.org/profiles/mike.gotfryd","role":null,"created_at":"2026-03-03T17:48:36.332Z","updated_at":"2026-03-03T17:48:36.332Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/nuget.org/maintainers/mike.gotfryd/packages"}]}