{"record":{"id":"316a1bb392829950","repo":"CoplayDev/unity-mcp","slug":"chunk-size-must-be-larger-than-0","errorCode":null,"errorMessage":"Chunk size must be larger than 0","messagePattern":"Chunk size must be larger than 0","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"TestProjects/AssetStoreUploads/Packages/com.unity.asset-store-tools/Editor/Previews/Scripts/Generators/NativePreviewGenerator.cs","lineNumber":39,"sourceCode":"        private RenderTexture _renderTexture;\r\n\r\n        private int _generatedPreviewsCount;\r\n        private int _totalPreviewsCount;\r\n\r\n        public override event Action<float> OnProgressChanged;\r\n\r\n        public NativePreviewGenerator(NativePreviewGenerationSettings settings)\r\n            : base(settings)\r\n        {\r\n            _nativeSettings = settings;\r\n        }\r\n\r\n        protected override void Validate()\r\n        {\r\n            base.Validate();\r\n\r\n            if (_nativeSettings.ChunkSize <= 0)\r\n                throw new ArgumentException(\"Chunk size must be larger than 0\");\r\n        }\r\n\r\n        protected override async Task<PreviewGenerationResult> GenerateImpl()\r\n        {\r\n            var result = new PreviewGenerationResult()\r\n            {\r\n                GenerationType = _nativeSettings.GenerationType\r\n            };\r\n\r\n            OnProgressChanged?.Invoke(0f);\r\n\r\n            try\r\n            {\r\n                var objects = GetObjectsRequiringPreviews(_nativeSettings.InputPaths);\r\n                var filteredObjects = new List<PreviewMetadata>();\r\n                var reusedPreviews = new List<PreviewMetadata>();\r\n                FilterObjects(objects, filteredObjects, reusedPreviews);\r\n\r","sourceCodeStart":21,"sourceCodeEnd":57,"githubUrl":"https://github.com/CoplayDev/unity-mcp/blob/c21bf496bca87d54e75bad048563c3adb1782081/TestProjects/AssetStoreUploads/Packages/com.unity.asset-store-tools/Editor/Previews/Scripts/Generators/NativePreviewGenerator.cs#L21-L57","documentation":"Thrown by NativePreviewGenerator.Validate() (NativePreviewGenerator.cs:39) when NativePreviewGenerationSettings.ChunkSize <= 0. ChunkSize controls batch sizing: WaitAndWritePreviewsChunked divides objects.Count by ChunkSize, and WaitAndWritePreviewIteration sizes the AssetPreview texture cache as ChunkSize*2. Zero/negative would cause a division/loop defect and a useless cache size. Thrown before GenerateImpl() and outside its try/catch, so it surfaces as an uncaught ArgumentException.","triggerScenarios":"Calling Generate() on a NativePreviewGenerator whose ChunkSize is at its default 0 or explicitly <= 0. Triggered whenever the native generator is used, because Validate() checks ChunkSize unconditionally (not only when ChunkedPreviewLoading is true).","commonSituations":"Constructing NativePreviewGenerationSettings without setting ChunkSize (int default 0); assuming ChunkSize only matters when ChunkedPreviewLoading is enabled and leaving it 0 in the non-chunked path.","solutions":["Set NativePreviewGenerationSettings.ChunkSize to a positive value (e.g. 50 or 100) before Generate().","Initialize ChunkSize together with WaitForPreviews and ChunkedPreviewLoading at construction.","Confirm the chunk size field in the Preview Generator window (native mode) before generating."],"exampleFix":"// before\nvar settings = new NativePreviewGenerationSettings { InputPaths = paths, OutputPath = outPath /* ChunkSize = 0 */ };\nawait new NativePreviewGenerator(settings).Generate(); // throws\n\n// after\nvar settings = new NativePreviewGenerationSettings { InputPaths = paths, OutputPath = outPath, ChunkSize = 100 };\nawait new NativePreviewGenerator(settings).Generate();","handlingStrategy":"validation","validationCode":"var s = settings as NativePreviewGenerationSettings;\nif (s != null && s.ChunkSize <= 0)\n    throw new InvalidOperationException(\"NativePreviewGenerationSettings.ChunkSize must be > 0 before generating previews.\");","typeGuard":"static bool HasValidChunkSize(NativePreviewGenerationSettings s) => s != null && s.ChunkSize > 0;","tryCatchPattern":"try { await generator.Generate(); }\ncatch (ArgumentException ex) when (ex.Message.Contains(\"Chunk size\")) { /* report invalid chunk size */ }","preventionTips":["Always set ChunkSize on NativePreviewGenerationSettings, even when ChunkedPreviewLoading is false (Validate checks it unconditionally).","Pick a chunk size proportional to asset count (e.g. 50-200)."],"tags":["unity","asset-store-tools","preview-generation","validation","argument-exception"],"backgroundTag":null,"analyzedSha":"c21bf496bca87d54e75bad048563c3adb1782081","analyzedAt":"2026-08-13T17:36:56.095Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}