Azure-sdk-for-java: [バグ]リソースがGallery、GalleryImage、GalleryImageVersionの場合、getByResourceGroupはNPEをスローします

作成日 2020年09月11日  ·  4コメント  ·  ソース: Azure/azure-sdk-for-java

バグを説明する
getByResourceGroupは、リソースがGallery、GalleryImage、またはGalleryImageVersionである場合に、NPEをスローします。 この関数を使用して、リソースが存在するかどうかを確認しています。

例外またはスタックトレース
java.lang.NullPointerException:null
com.microsoft.azure.management.compute.implementation.GalleryImageImplで。(GalleryImageImpl.java:56)
com.microsoft.azure.management.compute.implementation.GalleryImagesImpl.wrapModel(GalleryImagesImpl.java:42)で
com.microsoft.azure.management.compute.implementation.GalleryImagesImpl.access $ 000(GalleryImagesImpl.java:24)で
com.microsoft.azure.management.compute.implementation.GalleryImagesImpl $ 4.call(GalleryImagesImpl.java:84)で
com.microsoft.azure.management.compute.implementation.GalleryImagesImpl $ 4.call(GalleryImagesImpl.java:81)で
rx.internal.operators.OnSubscribeMap $ MapSubscriber.onNext(OnSubscribeMap.java:69)で
rx.internal.operators.OnSubscribeMap $ MapSubscriber.onNext(OnSubscribeMap.java:77)で
rx.internal.operators.OperatorMerge $ MergeSubscriber.emitScalar(OperatorMerge.java:511)で
rx.internal.operators.OperatorMerge $ MergeSubscriber.tryEmit(OperatorMerge.java:466)で
rx.internal.operators.OperatorMerge $ MergeSubscriber.onNext(OperatorMerge.java:244)で
rx.internal.operators.OperatorMerge $ MergeSubscriber.onNext(OperatorMerge.java:148)で
rx.internal.operators.OnSubscribeMap $ MapSubscriber.onNext(OnSubscribeMap.java:77)で
retrofit2.adapter.rxjava.CallArbiter.deliverResponse(CallArbiter.java:120)で
retrofit2.adapter.rxjava.CallArbiter.emitResponse(CallArbiter.java:102)で
retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:46)で
retrofit2.adapter.rxjava.CallExecuteOnSubscribe.call(CallExecuteOnSubscribe.java:24)で
rx.Observable.unsafeSubscribe(Observable.java:10327)で
rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)で
rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)で
rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)で
rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)で
rx.Observable.unsafeSubscribe(Observable.java:10327)で
rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)で
rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)で
rx.Observable.unsafeSubscribe(Observable.java:10327)で
rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48)で
rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33)で
rx.Observable.unsafeSubscribe(Observable.java:10327)で
rx.internal.operators.DeferredScalarSubscriber.subscribeTo(DeferredScalarSubscriber.java:153)で
rx.internal.operators.OnSubscribeTakeLastOne.call(OnSubscribeTakeLastOne.java:32)で
rx.internal.operators.OnSubscribeTakeLastOne.call(OnSubscribeTakeLastOne.java:22)で
rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48)で
rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30)で
rx.Observable.subscribe(Observable.java:10423)で
rx.Observable.subscribe(Observable.java:10390)で
rx.observables.BlockingObservable.blockForSingle(BlockingObservable.java:443)で
rx.observables.BlockingObservable.last(BlockingObservable.java:226)で
com.microsoft.azure.management.compute.implementation.GalleryImagesImpl.getByGallery(GalleryImagesImpl.java:91)で
com.some.package.AzureClient.getGalleryImage(MyAzureClient.java:348)で

再現するには
以下のコードを使用して、ギャラリーが存在しないことを確認してください。

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

コードスニペット
上記に追加。

予想される行動
nullを返し、コンシューマーが他のリソースタイプの場合と同じように動作できるようにする必要があります。
たとえば、パブリックIPアドレスに対して同じことを行うと、以下のコードはnullを出力します。

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

スクリーンショット
該当なし

セットアップ(次の情報を入力してください):

  • OS:iOS
  • IDE:IntelliJ
  • 1.36

追加のコンテキスト
ところで、以下のコードは、GalleryまたはGalleryImageのresourceIdを指定してnullを出力する場合は問題なく機能しますが、リソースグループ名とリソース名のみを操作する場合は理想的な回避策ではありません。

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

情報チェックリスト
上記のすべての情報を追加したことを確認し、必須フィールドをチェックしてください。そうしないと、発行者は不完全なレポートとして扱われます。

  • [x]バグの説明が追加されました
  • [x]再現手順が追加されました
  • [x]セットアップ情報が追加されました
Compute Mgmt bug customer-reported question

全てのコメント4件

この問題を報告していただきありがとうございます。 MgmtプレーンSDKチームの誰かがまもなくフォローアップします。

/ cc @yungezz

@ Shanky2304これを報告していただきありがとうございます。 これを修正するためにPRを作成しました。 リリースされる前に、以下のコードを試してみてください。

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

@ Shanky2304これを報告していただきありがとうございます。 これを修正するためにPRを作成しました。 リリースされる前に、以下のコードを試してみてください。

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

こんにちは@ xccc-msft、
修正にはGalleryImagesImplとGalleryImageVersionsImplへの変更が含まれているようですが、GalleryImageとGalleryImageVersionをフェッチするときにも、この提案された変更を適用する必要がありますか?

@knspatavardhanはい

このページは役に立ちましたか?
0 / 5 - 0 評価