[ 
https://issues.apache.org/jira/browse/CB-9278?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14628781#comment-14628781
 ] 

Omar Mefire edited comment on CB-9278 at 7/15/15 9:34 PM:
----------------------------------------------------------

This issue is due to the npmhelper.loadWithSettingsThenRestore function 
(https://github.com/apache/cordova-lib/blob/master/cordova-lib/src/util/npm-helper.js#L34)
 initializing global values (used across multiple function calls) and 
javascript/node.js being reentrant.

There is a kind of 'race condition' which arises when we try and restore 
multiple platforms.



was (Author: omefire):
This issue is due to the npmhelper.loadWithSettingsThenRestore function 
(https://github.com/apache/cordova-lib/blob/master/cordova-lib/src/util/npm-helper.js#L34)
 initializing values that are used across multiple function calls and 
javascript/node.js being reentrant.

When restoring a single platform of the form <platform>@<version>(e.g: 
[email protected]), we make a call to lazy_load.npm_cache_add(), which loads some 
settings using npm.load, runs the callback provided to npm_cache_add and then 
restores npm.load settings.

> Restoring multiple platforms fails
> ----------------------------------
>
>                 Key: CB-9278
>                 URL: https://issues.apache.org/jira/browse/CB-9278
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: CordovaLib
>    Affects Versions: Master
>         Environment: OS X
>            Reporter: Dmitry Blotsky
>            Assignee: Omar Mefire
>              Labels: cordova-lib, platform, restore, save
>   Original Estimate: 48h
>  Remaining Estimate: 48h
>
> Steps to reproduce:
> 1. Create a blank app: {{cordova create test com.app.test test}}
> 2. Add and save a platform: {{cordova platform add --save ios}}
> 3. Add and save another platform: {{cordova platform add --save android}}
> 4. Remove the platforms: {{cordova platform remove android ios}}
> 5. Try to restore platforms automatically: {{cordova prepare}}
> Expected: both platforms installed and prepared
> Actual:
> {noformat}
> Error: Trying to initialize npm when settings have not been restored from a 
> previous initialization.
> {noformat}
> Running {{cordova prepare}} again fixes the issue.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to