Azure / Azure/azure-libraries-for-java

WebApp update failing with password validation when using existing AppServiceCertificateOrder

オープン
#182 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る
App Services Bug customer-reported Investigate
主要言語
Java
スター
97
フォーク
102
PR マージ指標
30日以内にマージされた PR はありません

説明

We have the following code that tries to update an existing WebApp with an existing AppServiceCertificateOrder.

```
AppServiceCertificateOrder certificateOrder = azure.appServices().certificateOrders().getById(OUR_APPSERVICECERT_ID);
webApp.update().defineSslBinding()
.forHostname(OUR_HOSTNAME)
.withExistingAppServiceCertificateOrder(certificateOrder)
.withSniBasedSsl()
.attach()
.apply();
```

The certificateOrder that is retrieved seems correct when debugging, so our ID is not the problem. However, when the update is applied, the API fails with the following error (the request is never sent, if I debugged correctly). I don't see where or why I would need to provide a password to use an existing AppServiceCertificate, though, so this appears to be a bug or I am using the API incorrectly.

> java.lang.IllegalArgumentException: password is required and cannot be null.
at com.microsoft.rest.Validator.validate(Validator.java:85) ~[client-runtime-1.3.0.jar:?]
at com.microsoft.azure.management.appservice.implementation.CertificatesInner.createOrUpdateWithServiceResponseAsync(CertificatesInner.java:491) ~[azure-mgmt-appservice-1.6.0.jar:1.6.0]
at com.microsoft.azure.management.appservice.implementation.CertificatesInner.createOrUpdateAsync(CertificatesInner.java:460) ~[azure-mgmt-appservice-1.6.0.jar:1.6.0]
at com.microsoft.azure.management.appservice.implementation.AppServiceCertificateImpl$3.call(AppServiceCertificateImpl.java:157) ~[azure-mgmt-appservice-1.6.0.jar:1.6.0]
at com.microsoft.azure.management.appservice.implementation.AppServiceCertificateImpl$3.call(AppServiceCertificateImpl.java:154) ~[azure-mgmt-appservice-1.6.0.jar:1.6.0]
at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.producers.SingleProducer.request(SingleProducer.java:65) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Subscriber.setProducer(Subscriber.java:211) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:110) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.DeferredScalarSubscriber.complete(DeferredScalarSubscriber.java:102) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeTakeLastOne$TakeLastOneSubscriber.onCompleted(OnSubscribeTakeLastOne.java:57) ~[rxjava-1.2.4.jar:1.2.4]
at rx.observers.SerializedObserver.onCompleted(SerializedObserver.java:176) ~[rxjava-1.2.4.jar:1.2.4]
at rx.observers.SerializedSubscriber.onCompleted(SerializedSubscriber.java:64) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.drain(OnSubscribeConcatMap.java:246) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeConcatMap$ConcatMapSubscriber.onCompleted(OnSubscribeConcatMap.java:169) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.slowPath(OnSubscribeFromArray.java:106) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeFromArray$FromArrayProducer.request(OnSubscribeFromArray.java:63) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Subscriber.setProducer(Subscriber.java:211) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:32) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeFromArray.call(OnSubscribeFromArray.java:24) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Observable.unsafeSubscribe(Observable.java:10142) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:94) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeConcatMap.call(OnSubscribeConcatMap.java:42) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Observable.unsafeSubscribe(Observable.java:10142) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.DeferredScalarSubscriber.subscribeTo(DeferredScalarSubscriber.java:153) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeTakeLastOne.call(OnSubscribeTakeLastOne.java:32) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeTakeLastOne.call(OnSubscribeTakeLastOne.java:22) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Observable.unsafeSubscribe(Observable.java:10142) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:48) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeLift.call(OnSubscribeLift.java:30) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Observable.unsafeSubscribe(Observable.java:10142) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:48) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OnSubscribeMap.call(OnSubscribeMap.java:33) ~[rxjava-1.2.4.jar:1.2.4]
at rx.Observable.unsafeSubscribe(Observable.java:10142) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.operators.OperatorSubscribeOn$1.call(OperatorSubscribeOn.java:94) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.schedulers.CachedThreadScheduler$EventLoopWorker$1.call(CachedThreadScheduler.java:230) ~[rxjava-1.2.4.jar:1.2.4]
at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55) ~[rxjava-1.2.4.jar:1.2.4]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_51]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_51]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_51]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) ~[?:1.8.0_51]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) ~[?:1.8.0_51]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) ~[?:1.8.0_51]
at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

Start at the WebApp update().defineSslBinding() flow and follow AppServiceCertificateImpl into CertificatesInner.createOrUpdateAsync, where the stack trace reports the null-password validation. Reproduce the existing AppServiceCertificateOrder scenario and inspect the generated request path. Done means an existing certificate order can be attached without an unnecessary password validation failure.

索引モデルが issue の本文から書いたものです。

評価

技術スタック
azure, java
領域
cloud
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。