Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Knative Client Route createOrReplace bug #2354

Closed
Benjamin-Yim opened this issue Jul 16, 2020 · 6 comments · Fixed by #2385
Closed

Knative Client Route createOrReplace bug #2354

Benjamin-Yim opened this issue Jul 16, 2020 · 6 comments · Fixed by #2385

Comments

@Benjamin-Yim
Copy link

Benjamin-Yim commented Jul 16, 2020

使用 Knative Client 替换 Route 的时候出现一下错误:
An error occurred while replacing Route with the Knative Client:

Exception in thread "main" io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: https://:6443/apis/serving.knative.dev/v1/namespaces/default/routes. Message: routes.serving.knative.dev "helloworld-nodejs-red-blue1" already exists. Received status: Status(apiVersion=v1, code=409, details=StatusDetails(causes=[], group=serving.knative.dev, kind=routes, name=helloworld-nodejs-red-blue1, retryAfterSeconds=null, uid=null, additionalProperties={}), kind=Status, message=routes.serving.knative.dev "helloworld-nodejs-red-blue1" already exists, metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=null, additionalProperties={}), reason=AlreadyExists, status=Failure, additionalProperties={}).
	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:568)
	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:507)
	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:471)
	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:430)
	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate(OperationSupport.java:251)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate(BaseOperation.java:844)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:352)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.createOrReplace(BaseOperation.java:413)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.createOrReplace(BaseOperation.java:79)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.createOrReplace(BaseOperation.java:410)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.lambda$createOrReplaceWithNew$1(BaseOperation.java:383)
	at io.fabric8.knative.serving.v1.DoneableRoute.done(DoneableRoute.java:27)

复现方式如下:
The method of recurrence is as follows:

        kn.routes().createOrReplaceWithNew()
                .withNewMetadata()
                .withName("helloworld-nodejs-red-blue1")
                .withNamespace("default")
                .endMetadata()
                .withNewSpec()
                .withTraffic(traffic1)
                .endSpec()
                .done();

第一次执行的时候可正常执行,但是当第二次执行替换的时候,就会报上面的错误,经过 Debug 发现请求时没有带上 namespace:
normally the first time executed,But when you do the substitution the again executed,have a error:Failure executing:,After Debug, the request is found to have no namespace attached:

企业微信截图_1594892771930

但是真实请求 URL 应该是下面这样:
企业微信截图_1594893078923

@oscerd
Copy link
Member

oscerd commented Jul 16, 2020

Can you please add comment in english

@rohanKanojia
Copy link
Member

Seems related to #2292

@Benjamin-Yim
Copy link
Author

Seems related to #2292

Yes , Thanks

@manusa
Copy link
Member

manusa commented Aug 3, 2020

Seems related to #2292
Hi @rohanKanojia

Was this addressed in the fix for #2292 (#2372)? should we close this one?

@rohanKanojia
Copy link
Member

I will check and close if it's not reproducible any more on master

@rohanKanojia
Copy link
Member

rohanKanojia commented Aug 3, 2020

When I run this code using kubernetes-client master, I'm getting a NullPointerException:

Exception in thread "main" java.lang.NullPointerException
	at io.fabric8.kubernetes.client.utils.ResourceCompare.isEqualMetadata(ResourceCompare.java:94)
	at io.fabric8.kubernetes.client.utils.ResourceCompare.compareKubernetesResource(ResourceCompare.java:89)
	at io.fabric8.kubernetes.client.utils.ResourceCompare.equals(ResourceCompare.java:57)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.createOrReplace(BaseOperation.java:427)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.createOrReplace(BaseOperation.java:81)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.createOrReplace(BaseOperation.java:413)
	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.lambda$createOrReplaceWithNew$1(BaseOperation.java:385)
	at io.fabric8.knative.serving.v1.DoneableRoute.done(DoneableRoute.java:27)
	at io.fabric8.knative.client.demo.KnativeRouteCreateOrReplace.main(KnativeRouteCreateOrReplace.java:20)

rohanKanojia added a commit to rohanKanojia/kubernetes-client that referenced this issue Aug 3, 2020
…no resource is returned from fromServer.get()

Somehow resource was being returned as `null` from `fromServer.get()` call due to no
namespace being provided. Added a case of Null items in `ResourceCompare#equals`
rohanKanojia added a commit to rohanKanojia/kubernetes-client that referenced this issue Aug 3, 2020
…no resource is returned from fromServer.get()

Somehow resource was being returned as `null` from `fromServer.get()` call due to no
namespace being provided. Added a case of Null items in `ResourceCompare#equals`
rohanKanojia added a commit to rohanKanojia/kubernetes-client that referenced this issue Aug 3, 2020
…no resource is returned from fromServer.get()

Somehow resource was being returned as `null` from `fromServer.get()` call due to no
namespace being provided. Added a case of Null items in `ResourceCompare#equals`
manusa pushed a commit to rohanKanojia/kubernetes-client that referenced this issue Aug 20, 2020
…no resource is returned from fromServer.get()

Somehow resource was being returned as `null` from `fromServer.get()` call due to no
namespace being provided. Added a case of Null items in `ResourceCompare#equals`
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
4 participants