Azure-sdk-for-java: [ERROR] getByResourceGroup lanza un NPE cuando el recurso es una Gallery, GalleryImage o GalleryImageVersion

Creado en 11 sept. 2020  ·  4Comentarios  ·  Fuente: Azure/azure-sdk-for-java

Describe el error
getByResourceGroup lanza un NPE cuando el recurso es una Gallery, GalleryImage o GalleryImageVersion, que no debería. Solo estoy usando esta función para verificar si el recurso existe.

Excepción o seguimiento de pila
java.lang.NullPointerException: nulo
en com.microsoft.azure.management.compute.implementation.GalleryImageImpl.(GalleryImageImpl.java:56)
en com.microsoft.azure.management.compute.implementation.GalleryImagesImpl.wrapModel (GalleryImagesImpl.java:42)
en com.microsoft.azure.management.compute.implementation.GalleryImagesImpl.access $ 000 (GalleryImagesImpl.java:24)
en com.microsoft.azure.management.compute.implementation.GalleryImagesImpl $ 4.call (GalleryImagesImpl.java:84)
en com.microsoft.azure.management.compute.implementation.GalleryImagesImpl $ 4.call (GalleryImagesImpl.java:81)
en rx.internal.operators.OnSubscribeMap $ MapSubscriber.onNext (OnSubscribeMap.java:69)
en rx.internal.operators.OnSubscribeMap $ MapSubscriber.onNext (OnSubscribeMap.java:77)
en rx.internal.operators.OperatorMerge $ MergeSubscriber.emitScalar (OperatorMerge.java:511)
en rx.internal.operators.OperatorMerge $ MergeSubscriber.tryEmit (OperatorMerge.java:466)
en rx.internal.operators.OperatorMerge $ MergeSubscriber.onNext (OperatorMerge.java:244)
en rx.internal.operators.OperatorMerge $ MergeSubscriber.onNext (OperatorMerge.java:148)
en rx.internal.operators.OnSubscribeMap $ MapSubscriber.onNext (OnSubscribeMap.java:77)
en retrofit2.adapter.rxjava.CallArbiter.deliverResponse (CallArbiter.java:120)
en retrofit2.adapter.rxjava.CallArbiter.emitResponse (CallArbiter.java:102)
en retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call (CallExecuteOnSubscribe.java:46)
en retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call (CallExecuteOnSubscribe.java:24)
en rx.Observable.unsafeSubscribe (Observable.java:10327)
en rx.internal.operators.OnSubscribeMap.call (OnSubscribeMap.java:48)
en rx.internal.operators.OnSubscribeMap.call (OnSubscribeMap.java:33)
en rx.internal.operators.OnSubscribeLift.call (OnSubscribeLift.java:48)
en rx.internal.operators.OnSubscribeLift.call (OnSubscribeLift.java:30)
en rx.Observable.unsafeSubscribe (Observable.java:10327)
en rx.internal.operators.OnSubscribeMap.call (OnSubscribeMap.java:48)
en rx.internal.operators.OnSubscribeMap.call (OnSubscribeMap.java:33)
en rx.Observable.unsafeSubscribe (Observable.java:10327)
en rx.internal.operators.OnSubscribeMap.call (OnSubscribeMap.java:48)
en rx.internal.operators.OnSubscribeMap.call (OnSubscribeMap.java:33)
en rx.Observable.unsafeSubscribe (Observable.java:10327)
en rx.internal.operators.DeferredScalarSubscriber.subscribeTo (DeferredScalarSubscriber.java:153)
en rx.internal.operators.OnSubscribeTakeLastOne.call (OnSubscribeTakeLastOne.java:32)
en rx.internal.operators.OnSubscribeTakeLastOne.call (OnSubscribeTakeLastOne.java:22)
en rx.internal.operators.OnSubscribeLift.call (OnSubscribeLift.java:48)
en rx.internal.operators.OnSubscribeLift.call (OnSubscribeLift.java:30)
en rx.Observable.subscribe (Observable.java:10423)
en rx.Observable.subscribe (Observable.java:10390)
en rx.observables.BlockingObservable.blockForSingle (BlockingObservable.java:443)
en rx.observables.BlockingObservable.last (BlockingObservable.java:226)
en com.microsoft.azure.management.compute.implementation.GalleryImagesImpl.getByGallery (GalleryImagesImpl.java:91)
en com.some.package.AzureClient.getGalleryImage (MyAzureClient.java:348)

Reproducir
Simplemente use el siguiente código y asegúrese de que la galería no exista:

azure.galleries().getByResourceGroup(targetRg, galleryName);

Fragmento de código
Agregado arriba.

Comportamiento esperado
Debería devolver un valor nulo y dejar que el consumidor trabaje con él como lo hace con otros tipos de recursos.
Por ejemplo, cuando hago lo mismo para una dirección IP pública, el siguiente código se imprimirá como nulo.

PublicIPAddress pubIp = azure.publicIPAddresses().getByResourceGroup(targetRg, "tempPip");
System.out.println("Public IP:" + pubIp);

Capturas de pantalla
N / A

Configuración (complete la siguiente información):

  • SO: iOS
  • IDE: IntelliJ
  • 1,36

Contexto adicional
Por cierto, el siguiente código funciona bien si proporciono el resourceId de una Gallery o GalleryImage e imprime nulo, pero no es una solución ideal si solo quiero trabajar con el nombre del grupo de recursos y el nombre del recurso.

GenericResource genericResource = azure.genericResources().getById(sigResourceId);
System.out.println("Some resource:" + genericResource);

Lista de verificación de información
Por favor, asegúrese de haber agregado toda la siguiente información arriba y marque los campos obligatorios; de lo contrario, trataremos al emisor como un informe incompleto.

  • [x] Descripción del error agregada
  • [x] Pasos de reproducción agregados
  • [x] Información de configuración agregada
Compute Mgmt bug customer-reported question

Todos 4 comentarios

Gracias por reportar este problema. Alguien del equipo del SDK de Mgmt plane hará un seguimiento en breve.

/ cc @yungezz

@ Shanky2304 Gracias por informar de esto. He creado relaciones públicas para solucionar este problema. Antes de su lanzamiento, puede probar el siguiente código:

azure.galleries().inner().getByResourceGroup(targetRg, galleryName);

@ Shanky2304 Gracias por informar de esto. He creado relaciones públicas para solucionar este problema. Antes de su lanzamiento, puede probar el siguiente código:

azure.galleries().inner().getByResourceGroup(targetRg, galleryName);

Hola @ xccc-msft:
Veo que su corrección incluye cambios en GalleryImagesImpl y GalleryImageVersionsImpl, ¿debería aplicarse este cambio sugerido al obtener GalleryImage y GalleryImageVersion también?

@knspatavardhan

¿Fue útil esta página
0 / 5 - 0 calificaciones