Details for "io.failed"

Sorry, can’t find documentation how to get details for io.failed exception? What was the operation? Why it was failed?

2 Likes

Sorry - we are working on the detailed error messages in the future. Unfortunately, it’s a catch-all error message for IO operations. If you could provide more context, we will try to help you better on this

1 Like

Context if what I’m trying to get from the Error )))) Ok, I’ll try to add more logging in order to see what’s happening on the client side.

I do know it’s related to creating renditions. Is it happening with all renditions, or only some?

Ok, I guess I found one of the cases for xd.createRenditions crash with io.failed. Do you support paths longer than 255 chars on win? E.g. createFile for following path doesn’t crash C:\Users\curuser\AppData\Local\Packages\Adobe.CC.XD_adky2gkssdxte\LocalState\plugin_settings\io.sympli.qa.xd.plugin\work\00018\4e665e4f-bb9d-423f-b222-ffc846542506\web\114101115105122101100991141111124510198971005210155491005397102505410149505549489710010110210010250485248999845564848120535048.svg but when I try to export renditions into that file I’m getting io.failed exception.

Yeah, XD on Windows doesn’t like paths that long. And wow… that’s a long path!

CC @schenglooi ^^^

Simple user case is user create text layer and paste some long text into it. In such cases pasted text goes to layer name (BTW including special chars like line breaks) so layer name might be really huge.

But still details for exceptions are critically important. It’s really time consuming process to guess errors reasons especially on clients installations when we don’t have access to real designs.

UPD: Really unspecified exceptions in batch operations like createRenditions seems to be not very good idea because it doesn’t make any sense to catch such exception - you never know what has happened and was was already processed. Initially I thought that io.failed was thrown by createFile and it makes sense for that function but I was wrong :frowning: It looks like createFile doesn’t do anything except creating new instance of the File class.

I’m still facing io.failed on some cases when I call createRenditions as a batch which I can’t reproduce with for loop. Any suggestions how to debug such errors?
UPD: it looks like chunking by 100 items temporary solved the problem. What’s the real limit?

How big was that batch that got you failed? We are currently investigating. Currently, io.failed error message includes:

  • access denied (disk permission)
  • readonly folder
  • not enough disk space
  • maximum path (I think it’s 256 currently on both platform)

Does any of this cover your situation?

1 Like

It seems it had about 1100 renditions as a single batch. None of the errors covers the case.

One more case - if we try to export folder which doesn’t have any layers inside (but has other folders) XD throws io.failed instead of rendering empty image. Are there any other restrictions? Like layer should be not empty or anything?
UPD: Layer within folder must be visible, otherwise it fails too.

Curious what you mean by “folder” and “layer” here.

By folder I mean Group or Artboard. I’m not sure if XD has any other grouping nodes except these two. And layer - all other SceneNode instances.

Hi Team,

I am facing same kind of issue, where the console shows io.failed error in windows 10 when trying to write a file using createRenditions

I have checked as you have mentioned before for the folder permissions, disk storage and permissions, maximum path and everything looks good.

Also, I am getting this issue only in certain computers, where as the createRenditions works well in other computers. All the computers that I am testing are the same windows 10 and all have same settings.

Could someone please shed a light, If am missing something here.

error.stack
undefined
at error (plugins/PluginLoader.js:1:11515)
at b. (plugins/PluginLoader.js:1:2184)
at uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/domjs/src/js/domjs_scripts.js:334:893
at j (uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/domjs/src/js/domjs_scripts.js:334:785)
at g (uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/domjs/src/js/domjs_scripts.js:334:390)
at f (uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/domjs/src/js/domjs_scripts.js:334:192)
at k (uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/domjs/src/js/domjs_scripts.js:334:1097)
at b.value (uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/pluginmanager/src/js/pluginmanager_scripts.js:71:4436)
at console. (uxp://uxp-internal/home/ubuntu/jenkins/workspace/Torq/torq-native/release-3.3.8/build/modules_gen/js/runtime/src/js/runtime_scripts_loader.js:64:1034)

There’s a bug in the current Windows version of XD causing renditions to a user-selected folder to often fail: see createRenditions fails often in Windows.

We expect this will be fixed in XD’s next release.

3 Likes

This issue should be fixed in XD 28.4.12.3. Cross-linking in case some are only following this thread.

We are still getting errors from users:

  • io.failed (on AdobeXD/28.9.12.2 on Mac)
  • no such file or directory (on AdobeXD/29.0.32.13 on Mac)
  • Error: HRESULT: -2147023721, Unable to remove the file to be replaced. (on AdobeXD/28.9.12.2 on Win)

The problem is that we can’t diagnose the errors as they do not include any useful information.

Just got one more customer with io.failed. Does anybody know how to debug such issue on Mac? Does XD write own system logs anywhere? Are there any ways to debug it?

1 Like

Indeed.

Debug tips: If you use async / await anywhere (and you might be with createRenditions) you will want to avoid half of ES6 features because they do not work with async await, which ends up creating some rendition failed errors. For example, do not use Array.forEach() since they are callbacks and will execute out of order (if using await).

Also, put a try catch around the code the code that is creating the errors.