snowdrop / istio-java-api

A Java API to generate Istio descriptors, inspired by Fabric8's kubernetes-model.
Apache License 2.0
112 stars 33 forks source link

UnrecognizedPropertyException: Unrecognized field "traffic_policy" #73

Closed lianghuiyuan closed 5 years ago

lianghuiyuan commented 5 years ago

This problem come out when I get DestinationRuleList in namespace 'istio-system' In the file DestinationRuleSpec.class of package package me.snowdrop.istio.api.networking.v1alpha3; It is trafficPolicy instead of traffic_policy my Istio version:

$ istioctl version
client version: 1.2.2
grafana version: 
citadel version: 1.1.8
galley version: 1.1.8
ingressgateway version: 1.1.8
pilot version: 1.1.8
policy version: 1.1.8
sidecar-injector version: 1.1.8
telemetry version: 1.1.8
kiali version: 
prometheus version: 

This is what I get DestinationRule from Kubernetes with kubectl:

$ kubectl get destinationrule istio-policy -o yaml -n istio-system
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  creationTimestamp: "2019-06-14T08:09:08Z"
  generation: 1
  name: istio-policy
  namespace: istio-system
  ownerReferences:
  - apiVersion: istio.alibabacloud.com/v1beta1
    blockOwnerDeletion: true
    controller: true
    kind: Istio
    name: istio-config
    uid: a3a79285-8e7b-11e9-91b0-aeb2e5e2ff0c
  resourceVersion: "175473952"
  selfLink: /apis/networking.istio.io/v1alpha3/namespaces/istio-system/destinationrules/istio-policy
  uid: af95089f-8e7b-11e9-91b0-aeb2e5e2ff0c
spec:
  host: istio-policy.istio-system.svc.cluster.local
  traffic_policy:
    connection_pool:
      http:
        http2_max_requests: 10000
        max_requests_per_connection: 10000

Here is the error message:

[2019-08-01 18:13:26,464][TRACE:http-nio-8080-exec-3][InvocableHandlerMethod.java:136] Arguments: [istio-system]
[2019-08-01 18:13:26,483][TRACE:http-nio-8080-exec-3][AbstractBeanFactory.java:254] Returning cached instance of singleton bean 'customControllerAdvice'
[2019-08-01 18:13:26,483][DEBUG:http-nio-8080-exec-3][ExceptionHandlerExceptionResolver.java:403] Using @ExceptionHandler public com.authine.lateinos.svc.ResponseResult<java.lang.Object> com.authine.lateinos.container.handler.CustomControllerAdvice.handle(java.lang.Throwable)
[2019-08-01 18:13:26,483][TRACE:http-nio-8080-exec-3][InvocableHandlerMethod.java:136] Arguments: [io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.]
[2019-08-01 18:13:26,483][INFO :http-nio-8080-exec-3][CustomControllerAdvice.java:59] An error has occurred.
io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
    at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:64)
    at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable(KubernetesClientException.java:53)
    at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:243)
    at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:195)
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:409)
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:365)
    at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:347)
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.listRequestHelper(BaseOperation.java:145)
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:612)
    at io.fabric8.kubernetes.client.dsl.base.BaseOperation.list(BaseOperation.java:63)
    at com.authine.lateinos.kube.api.service.impl.DestinationRuleCtrl.listDestinationRule(DestinationRuleCtrl.java:27)
    at com.authine.lateinos.kube.api.service.impl.DestinationRuleImpl.listDestinationRule(DestinationRuleImpl.java:27)
    at com.authine.lateinos.kube.api.controller.DestinationRuleController.list(DestinationRuleController.java:67)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1039)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:836)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1747)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "traffic_policy" (class me.snowdrop.istio.api.networking.v1alpha3.DestinationRuleSpec), not marked as ignorable (4 known properties: "host", "subsets", "exportTo", "trafficPolicy"])
 at [Source: (BufferedInputStream); line: 1, column: 695] (through reference chain: me.snowdrop.istio.api.networking.v1alpha3.DestinationRuleList["items"]->java.util.ArrayList[0]->me.snowdrop.istio.api.networking.v1alpha3.DestinationRule["spec"]->me.snowdrop.istio.api.networking.v1alpha3.DestinationRuleSpec["traffic_policy"])
    at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61)
    at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:823)
    at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1153)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
    at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
    at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4013)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3077)
    at io.fabric8.kubernetes.client.utils.Serialization.unmarshal(Serialization.java:241)
    ... 64 more
metacosm commented 5 years ago

How was that DestinationRule created?

lianghuiyuan commented 5 years ago

It is the cloud platform I used had created the destinationrule already. now they fixed to supply both json and protobuf.