Problems submitting draft for review

Hi guys,

I’m getting the following error when I try to submit the extension draft for review:

I’m not sure what to do, the error is persisting for many days now. I was able to submit my extension in the past. This new version of the extension has the same structure as before, it’s just increased in size (181MB), but that shouldn’t be a problem since the maximum allowed size should be 256MB.

This is the .rbz file I’m trying to submit: https://fluidrayrender.com/www.fluidinteractive.com/wordpress/software/AmbientOcclusion/AmbientOcclusionPro-3.0.1.rbz

It would be useful if the Warehouse was giving more descriptive error messages.

1 Like

:+1:

A common complaint.


Not likely an issue but "AmbientOcclusionProLoader.rb" has a comment at the top, viz:
#AmbientOcclusionProCore.rb
The “loader” file is actually require'd by "AmbientOcclusionProCore.rb""


The "AmbientOcclusionProLoader.rb" file is strange in that it’s very busy with many large literal path strings and if clauses that looked to have been switched off by adding and false.

Here for what it’s worth is a more dynamic loader file, as an example, etc.

AmbientOcclusionProLoader_dynamic.rb (1.4 KB)


I don’t think your extension registrar file needs that DummyLanguageHandler anymore if you are not supporting SketchUp versions under 14 (and it looks like only v17+.)


Your "AmbientOcclusionPro.rb" file has an issue. It repeatedly (from quite a few UI::Command procs,) calls an #init method, which will call Kernel#require with a large string argument. This is done apparently to be sure the compiled code is loaded.
But each time this is called, the very large global $LOADED_FEATURES array must be iterated and each member path string checked for a match to this argument path string. Ruby String comparison is quite slow, so this method of checking if your resource is loaded is inefficient.

Ie …

module AmbientOcclusionPro
  
  def self.init()
    require 'AmbientOcclusionPro/AmbientOcclusionProLoader.rb'
  end

You could set a boolean @core_loaded variable to true after the binaries are loaded, and thereafter check this before calling #init

or, even better, if your binaries define any methods, you could simply ask the module if it responds_to?(:some_method_name)

For example, I see that there is reference to a "initAPI" method that is not defined in Ruby.
This (or a similar method defined in C) could be used as a loaded test. Ie …

module AmbientOcclusionPro
  
  def self.init()
    return if self.respond_to?(:initAPI)
    require 'AmbientOcclusionPro/AmbientOcclusionProLoader.rb'
  end

In this way you can avoid the needless path string checking once the binaries are loaded.

2 Likes

Thanks for the in-depth response. I will implement those changes and see if that helps.

Are you still having problems. Sounds like there was some server issue over the weekend: Extension Warehouse RBZ upload : HTTP error 504 😕 - #3 by boris.beaulant

Yes, I just tried right now, still the same error. I haven’t included the changes above though.

Looking at the javascript console, I get the following:

[Error] Failed to load resource: the server responded with a status of 500 () (submit, line 0) https://extensions.sketchup.com/api/v1/extension/submit

Update: added the changes recommended by @DanRathbun, here’s the updated file:

https://fluidrayrender.com/www.fluidinteractive.com/wordpress/software/AmbientOcclusion/AmbientOcclusionPro-3.0.2.rbz

Unfortunately the problem still persists. Was anybody successful in submitting big files? (this one is ~230MB)

Can you send the RBZ you are trying to submit to developer-support@sketchup.com please? We can try to test/debug it on our end.

1 Like

The RBZ I’m trying to submit is the following:

https://fluidrayrender.com/www.fluidinteractive.com/wordpress/software/AmbientOcclusion/AmbientOcclusionPro-3.0.2.rbz

I’ll forward the link to developer-support@sketchup.com as well.

I was able to reproduce. I logged a ticket and escalated to the EW team.

1 Like

Great, thanks for helping!

I’m afraid I we don’t have a fix yet. But it’s being investigated. Sorry for the inconvenience.

A workaround is probably to zip the .dll, the .so and probably .bundle files into a single file and to handle the decompression in the extension. It should help to pass the submission.

Thanks for the update. Is the problem caused by the fact that there are too many .dll files? If that was the case, we might be able to remove some unnecessary dlls.

I do not know what the exact problem is. I am telling you this because the Scan Essentials extension is similar to yours. The rbz is 103MB, but there is a binary folder into the extension which is 500MB after the rbz is installed. It does not pass the submission. A workaround that works is to zip the dlls. Maybe your issue is different though.

The issue is being worked, please hold a little bit more. I wouldn’t dive into restructuring your RBZ just yet.

2 Likes

That’s great news, thanks for the update.

Latest update is that a potential fix is being tested in our staging environment.

1 Like

A fix should now be deployed that should allow the extension to be submitted.

Note that the UI might still incorrectly indicate a failure, we have a separate ticket to address that. Refresh the page to see if the submission went through.

3 Likes

Fantastic, I’ll try submitting the extension and let you know.

I successfully submitted the extension for review. Thanks a lot for the help!

2 Likes