Search Issue Tracker
Won't Fix
Votes
0
Found in
5.3.3f1
Issue ID
776696
Regression
No
Unity fails to find files in the cache server that were just uploaded
Problem 1
Modifying importer settings that are also being set by Asset Processors produces false cache misses and inconsistent behaviour.
Scenario:
- Project contains an AssetPostprocessor which sets “maxTextureSize = 32” during OnPreprocessTexture (note though that it fails the same way with OnPostprocessTexture)
- User changes Texture Importer settings, including “maxTextureSize = 64”, and hits Apply or calls ADB.WriteImportSettingsIfDirty
Result:
- We ask the Cache Server for this asset (not there)
- Settings get applied
- Asset Processors are run and revert maxTextureSize to 32
- We upload the final asset to the Cache Server (a different one than we asked for, now with maxTextureSize = 32). Even if this final asset actually exists on the Cache Server, we still get a cache miss and upload it again, because initially we asked for something else.
- BUT - in case the requested version of the asset does exist on the Cache Server for some reason (e.g. if we play with asset settings before adding the Asset Processor), we download and use it, ignoring the Asset Processor (at least until the next manual Reimport or scripted Import using the DontDownloadFromCacheServer flag).
Repro steps:
- (Set up empty local cache server, import the test package)
- "TEST/Import Texture/No meta"
- "TEST/Set maxTextureSize to 512” (or modify some settings in the inspector, including maxTextureSize)*
*Note that sometimes the Preprocessor takes some time to kick in
Cache Server Console:
Get Asset Info .../30fb656337cca74c007e6d7de71e73b1
Get Asset Binary .../30fb656337cca74c007e6d7de71e73b1
Start transaction for ...-a4c1b3865f2c135045b573ff265e5a29 -- (sic!)
Put Asset Info ...-a4c1b3865f2c135045b573ff265e5a29 (size 5580)
Put Asset Binary ...-a4c1b3865f2c135045b573ff265e5a29 (size 14624)
End transaction for ...-a4c1b3865f2c135045b573ff265e5a29
---------
Problem 2
If an asset gets imported with its existing .meta data, asset processors are run against it but the dependency hash is only updated after a manual Reimport (or scripted Import using the DontDownloadFromCacheServer flag).
Scenario:
- Project contains an AssetPostprocessor which sets “maxTextureSize = 32” during OnPreprocessTexture (note though that it fails the same way with OnPostprocessTexture)
- User imports a Texture with the .meta file (all default settings)
Result:
- Asset Processors are run, as expected
- Asset is uploaded to Cache Server, as expected
- Manually calling Reimport (or calling Import using the DontDownloadFromCacheServer flag) reimports the asset with the same settings, but suddenly the dependency hash is now updated (and re-cached)
Repro steps:
- (Set up empty local cache server, import the test package)
- "TEST/Import Texture/Template meta"
- "TEST/ADB/Import (Skip CS)" (or manually Reimport)
Won't Fix:
- Preprocessor can change the metafile which is part of the hash.
- Preprocessor runs as part of the actual import operation.
- So we don't always have correct hash when we ask the cache server.
- This can't be fixed easily in the current architecture.
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Articulation Body with 'Revolute' Joint Type has erratic behavior when Upper Limit is set to above 360
- WebGL Player fails to render Scene when Terrain with Detail Mesh is added and WebGPU Graphics API is used
- Inconsistent errors are logged when different types are passed into the Query "Q<>" method in UIToolkit and the ancestor VisualElement is null
- Crash on GetMaterialPropertyByIndex when opening a specific Scene
- Discrepancies in the styling are present when using a TSS file instead of a USS file in custom EditorWindow
Add comment