{"record":{"id":"a0197135c9239c82","repo":"stride3d/stride","slug":"missing-content-storage-streamingmanager","errorCode":null,"errorMessage":"Missing content storage.","messagePattern":"Missing content storage\\.","errorType":"exception","errorClass":"ContentStreamingException","httpStatus":null,"severity":"error","filePath":"sources/engine/Stride.Rendering/Streaming/StreamingManager.cs","lineNumber":342,"sourceCode":"\n            Debug.Assert(resource != null, \"resource != null\");\n\n            lock (resources)\n            {\n                Debug.Assert(resources.Contains(resource), \"resources.Contains(resource)\");\n\n                resources.Remove(resource);\n                resourcesLookup.TryRemove(resource.Resource, out _);\n                activeStreaming.Remove(resource);\n            }\n        }\n\n        private StreamingTexture CreateStreamingTexture(Texture obj, ref ImageDescription imageDescription, ref ContentStorageHeader storageHeader)\n        {\n            // Get content storage container\n            var storage = ContentStreaming.GetStorage(ref storageHeader);\n            if (storage == null)\n                throw new ContentStreamingException(\"Missing content storage.\");\n\n            // Find resource or create new\n            var resource = Get(obj);\n            if (resource == null)\n            {\n                resource = new StreamingTexture(this, obj);\n                RegisterResource(resource);\n            }\n\n            // Update resource storage/description information (may be modified on asset rebuilding)\n            resource.Init(Services.GetSafeServiceAs<IDatabaseFileProviderService>(), storage, ref imageDescription);\n\n            // Check if cannot use streaming\n            if (!Enabled)\n            {\n                FullyLoadResource(resource);\n            }\n","sourceCodeStart":324,"sourceCodeEnd":360,"githubUrl":"https://github.com/stride3d/stride/blob/96fad776d210c221682aac1ccdf4c79dc046fc38/sources/engine/Stride.Rendering/Streaming/StreamingManager.cs#L324-L360","documentation":"To stream a texture, Stride reads mip data from the content storage container referenced by the asset's ContentStorageHeader. CreateStreamingTexture calls ContentStreaming.GetStorage; if it returns null the storage container behind the texture asset is unavailable, and a ContentStreamingException(\"Missing content storage.\") is thrown because streaming cannot proceed without it.","triggerScenarios":"RegisterTexture/CreateStreamingTexture receiving a Texture whose image was built without a valid ContentStorageHeader — e.g. textures loaded outside the database file provider, compiled without streaming data, or with the storage file deleted/moved.","commonSituations":"Enabling texture streaming for assets compiled in a mode that did not emit streaming chunks; running content on a machine where the raw data files (.bin chunks) are missing; loading textures via a provider that has no access to the streaming storage.","solutions":["Recompile/re-import the texture asset so streaming data and its storage container are emitted","Verify the database file provider is configured and the raw content storage files exist next to the compiled assets","Disable texture streaming for that texture (remove streaming flags / use a non-streaming Texture load) if storage is not available","Check that ContentStreaming.GetStorage inputs (storageHeader) are intact — don't strip headers when copying assets"],"exampleFix":"// before\nvar texture = Content.Load<Texture>(\"tex\", StreamingFlags); // storage files missing\n// after\n// re-import asset with streaming data, or:\nvar texture = Content.Load<Texture>(\"tex\", Content.ContentManagerOptions.ForceKeepRaw); // non-streaming path","handlingStrategy":"validation","validationCode":"var storage = ContentStreaming.GetStorage(ref storageHeader);\nif (storage == null)\n{\n    // fall back to non-streaming load\n    return Content.Load<Texture>(url);\n}","typeGuard":null,"tryCatchPattern":"try\n{\n    streamingManager.RegisterTexture(texture, description);\n}\ncatch (ContentStreamingException)\n{\n    Logger.Warning(\"Streaming storage missing; loading texture without streaming\");\n}","preventionTips":["Compile assets with streaming data enabled when using streaming","Verify content storage files are deployed with compiled assets","Ensure the database file provider is configured before loading streaming textures"],"tags":["streaming","textures","content"],"backgroundTag":"resource-not-found","analyzedSha":"96fad776d210c221682aac1ccdf4c79dc046fc38","analyzedAt":"2026-09-14T02:59:31.279Z","contentChangedAt":"2026-09-14T02:59:31.279Z","schemaVersion":2},"datasetVersion":"2026-09-15T23:17:13.987Z"}