@@ -40,7 +40,7 @@ qx.Class.define("osparc.store.Services", {
40
40
this . __addExtraTypeInfos ( servicesObj ) ;
41
41
42
42
Object . values ( servicesObj ) . forEach ( serviceKey => {
43
- Object . values ( serviceKey ) . forEach ( service => this . __addToCache ( service ) ) ;
43
+ Object . values ( serviceKey ) . forEach ( service => this . __addServiceToCache ( service ) ) ;
44
44
} ) ;
45
45
46
46
resolve ( servicesObj ) ;
@@ -110,7 +110,10 @@ qx.Class.define("osparc.store.Services", {
110
110
if (
111
111
useCache &&
112
112
this . __isInCache ( key , version ) &&
113
- "history" in this . __servicesCached [ key ] [ version ]
113
+ (
114
+ this . __servicesCached [ key ] [ version ] === null ||
115
+ "history" in this . __servicesCached [ key ] [ version ]
116
+ )
114
117
) {
115
118
resolve ( this . __servicesCached [ key ] [ version ] ) ;
116
119
return ;
@@ -127,17 +130,16 @@ qx.Class.define("osparc.store.Services", {
127
130
this . __addHit ( service ) ;
128
131
this . __addTSRInfo ( service ) ;
129
132
this . __addExtraTypeInfo ( service ) ;
130
- this . __addToCache ( service )
133
+ this . __addServiceToCache ( service ) ;
134
+ delete this . __servicesPromisesCached [ key ] [ version ] ;
131
135
resolve ( service ) ;
132
136
} )
133
137
. catch ( err => {
134
138
// store it in cache to avoid asking again
135
- this . __servicesCached [ key ] [ version ] = null ;
139
+ this . __addToCache ( key , version , null ) ;
140
+ delete this . __servicesPromisesCached [ key ] [ version ] ;
136
141
console . error ( err ) ;
137
142
reject ( ) ;
138
- } )
139
- . finally ( ( ) => {
140
- delete this . __servicesPromisesCached [ key ] [ version ] ;
141
143
} ) ;
142
144
} ) ;
143
145
} ,
@@ -282,23 +284,27 @@ qx.Class.define("osparc.store.Services", {
282
284
wbServices . forEach ( srv => {
283
285
promises . push ( this . getService ( srv [ "key" ] , srv [ "version" ] ) ) ;
284
286
} ) ;
285
- return Promise . all ( promises ) ;
287
+ return Promise . allSettled ( promises ) ;
286
288
} ,
287
289
288
290
getInaccessibleServices : function ( workbench ) {
289
291
const allServices = this . __servicesCached ;
290
- const unaccessibleServices = [ ] ;
292
+ const inaccessibleServices = [ ] ;
291
293
const wbServices = osparc . study . Utils . extractUniqueServices ( workbench ) ;
292
294
wbServices . forEach ( srv => {
293
- if ( srv . key in allServices && srv . version in allServices [ srv . key ] ) {
295
+ if (
296
+ srv . key in allServices &&
297
+ srv . version in allServices [ srv . key ] &&
298
+ allServices [ srv . key ] [ srv . version ] // check metadata is not null
299
+ ) {
294
300
return ;
295
301
}
296
- const idx = unaccessibleServices . findIndex ( unSrv => unSrv . key === srv . key && unSrv . version === srv . version ) ;
302
+ const idx = inaccessibleServices . findIndex ( unSrv => unSrv . key === srv . key && unSrv . version === srv . version ) ;
297
303
if ( idx === - 1 ) {
298
- unaccessibleServices . push ( srv ) ;
304
+ inaccessibleServices . push ( srv ) ;
299
305
}
300
306
} ) ;
301
- return unaccessibleServices ;
307
+ return inaccessibleServices ;
302
308
} ,
303
309
304
310
getInaccessibleServicesMsg : function ( inaccessibleServices , workbench ) {
@@ -340,13 +346,17 @@ qx.Class.define("osparc.store.Services", {
340
346
return this . getLatest ( "simcore/services/frontend/iterator-consumer/probe/" + type ) ;
341
347
} ,
342
348
343
- __addToCache : function ( service ) {
349
+ __addServiceToCache : function ( service ) {
344
350
const key = service . key ;
345
351
const version = service . version ;
352
+ this . __addToCache ( key , version , service ) ;
353
+ } ,
354
+
355
+ __addToCache : function ( key , version , value ) {
346
356
if ( ! ( key in this . __servicesCached ) ) {
347
357
this . __servicesCached [ key ] = { } ;
348
358
}
349
- this . __servicesCached [ key ] [ version ] = service ;
359
+ this . __servicesCached [ key ] [ version ] = value ;
350
360
} ,
351
361
352
362
__isInCache : function ( key , version ) {
0 commit comments