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

Asset Import

-

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.

Add comment

Log in to post comment

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.