kubernetes-client/java

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 60 path $.status

Opened this issue · 6 comments

Describe the bug
I attempted to delete a Service using the Kubernetes Java client, and while the Service was indeed removed, an exception was thrown during the operation.
03/08 17:51:58 [] ERROR [pool-1-thread-2] c.c.d.c.e.b.s.impl.DeployServiceImpl - delete service failed:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 60 path $.status
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:397)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.readIntoField(ReflectiveTypeAdapterFactory.java:212)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:433)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:393)
at com.google.gson.Gson.fromJson(Gson.java:1227)
at com.google.gson.Gson.fromJson(Gson.java:1137)
at com.google.gson.Gson.fromJson(Gson.java:1047)
at com.google.gson.Gson.fromJson(Gson.java:1014)
at io.kubernetes.client.openapi.JSON.deserialize(JSON.java:168)
at io.kubernetes.client.openapi.ApiClient.deserialize(ApiClient.java:759)
at io.kubernetes.client.openapi.ApiClient.handleResponse(ApiClient.java:960)
at io.kubernetes.client.openapi.ApiClient.execute(ApiClient.java:885)
at io.kubernetes.client.openapi.apis.CoreV1Api.deleteNamespacedServiceWithHttpInfo(CoreV1Api.java:25938)
at io.kubernetes.client.openapi.apis.CoreV1Api.deleteNamespacedService(CoreV1Api.java:25868)

debug info:
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - --> DELETE https://10.90.2.73:6443/api/v1/namespaces/daily-dev/services/cone-page-test-s-349382382303973376
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IkJwVzB1RnMtLTNGdTIyaFhjaDRfRFNKaDcxdGZtazhKVTBqVlFnRlpJQmcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJ0dmFuYS10b2tlbi1uemc4ZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJ0dmFuYSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImZmYzM3YzQwLTYyYzEtNDQ2YS04MGM3LWZkNWQ5N2I1NDM4NCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTp0dmFuYSJ9.X6D9zIH1S447GmNOUdlpNJtwnEdew4qz-A4V_5e-QcnoPgcNajHNFNb6oDSB0duqwgm4hvc3vLnxWQVcmWHq_z6raNYyYZls24Ta_fEAtqILlq9GRF2JleIP8P4q2UXMVBYREr7KVDQJOq9QO_bYcdbbY51Bwd_IrRqgqHsCAfBScDgpH7aHHAyywjiP595hIjhrFX_wkWEq65tJRqLFmCVoqJB7f3jOP9nGavKERW2IsZBWIGpPMaJGgeT7O_wiDVlTLi4xmFuztKsfH7GxrjfLkvEtEiHa5cX6LyKCC3OEBDqArBN7W3X0HyJRpg4Jflyf6Iv8NL9kOIauLzo5Vw
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - Accept: application/json
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - User-Agent: Kubernetes Java Client/17.0.0-SNAPSHOT
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - --> END DELETE
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - <-- 200 https://10.90.2.73:6443/api/v1/namespaces/daily-dev/services/cone-page-test-s-349382382303973376 (312ms)
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - audit-id: c2538ec0-2f06-455c-929a-03541986e9b4
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - cache-control: no-cache, private
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - content-type: application/json
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - content-length: 189
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - date: Fri, 08 Mar 2024 09:55:52 GMT
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient -
03/08 17:55:51 [] INFO [pool-1-thread-3] okhttp3.OkHttpClient - {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Success","details":{"name":"cone-page-test-s-349382382303973376","kind":"services","uid":"c4c88267-dbf8-443c-8a07-b09d8d8bd770"}}

Client Version
17.0.0

Kubernetes Version
1.19.3

Java Version
Java 8

To Reproduce
Steps to reproduce the behavior:

Expected behavior
A clear and concise description of what you expected to happen.

KubeConfig
If applicable, add a KubeConfig file with secrets redacted.

Server (please complete the following information):

  • OS: [e.g. Linux]
  • Environment [e.g. container]
  • Cloud [e.g. Azure]

Additional context
Add any other context about the problem here.

image image

gson
{serializeNulls:false,factories:[Factory[typeHierarchy=com.google.gson.JsonElement,adapter=com.google.gson.internal.bind.TypeAdapters$28@578415f3], com.google.gson.internal.bind.ObjectTypeAdapter$1@456d8ea4, com.google.gson.internal.Excluder@25a6752d, com.google.gson.internal.bind.TypeAdapters$30@74bb4367, com.google.gson.internal.bind.TypeAdapters$30@25588a46, com.google.gson.internal.bind.TypeAdapters$30@38fe33f6, com.google.gson.internal.bind.TypeAdapters$30@26b0b8af, com.google.gson.internal.bind.TypeAdapters$30@8be7765, io.gsonfire.gson.WrapTypeAdapterFactory@6955c68e, io.gsonfire.gson.SimpleIterableTypeAdapterFactory@20fd39d1, io.gsonfire.gson.HooksTypeAdapterFactory@3ab88a1, Factory[type=java.lang.String,adapter=com.google.gson.internal.bind.TypeAdapters$15@7d38a54c], Factory[type=java.lang.Integer+int,adapter=com.google.gson.internal.bind.TypeAdapters$7@e8b9036], Factory[type=java.lang.Boolean+boolean,adapter=com.google.gson.internal.bind.TypeAdapters$3@78b76d18], Factory[type=java.lang.Byte+byte,adapter=com.google.gson.internal.bind.TypeAdapters$5@2a031b94], Factory[type=java.lang.Short+short,adapter=com.google.gson.internal.bind.TypeAdapters$6@1229d95d], Factory[type=java.lang.Long+long,adapter=com.google.gson.internal.bind.TypeAdapters$11@4071e10e], Factory[type=java.lang.Double+double,adapter=com.google.gson.Gson$1@7855d2ee], Factory[type=java.lang.Float+float,adapter=com.google.gson.Gson$2@3f731adc], com.google.gson.internal.bind.NumberTypeAdapter$1@6d3f2bbb, Factory[type=java.util.concurrent.atomic.AtomicInteger,adapter=com.google.gson.TypeAdapter$1@2209ce83], Factory[type=java.util.concurrent.atomic.AtomicBoolean,adapter=com.google.gson.TypeAdapter$1@4d56d954], Factory[type=java.util.concurrent.atomic.AtomicLong,adapter=com.google.gson.TypeAdapter$1@76898f52], Factory[type=java.util.concurrent.atomic.AtomicLongArray,adapter=com.google.gson.TypeAdapter$1@2938efa2], Factory[type=java.util.concurrent.atomic.AtomicIntegerArray,adapter=com.google.gson.TypeAdapter$1@378d0dd], Factory[type=java.lang.Character+char,adapter=com.google.gson.internal.bind.TypeAdapters$14@781f359f], Factory[type=java.lang.StringBuilder,adapter=com.google.gson.internal.bind.TypeAdapters$19@7c467fca], Factory[type=java.lang.StringBuffer,adapter=com.google.gson.internal.bind.TypeAdapters$20@58b8e479], Factory[type=java.math.BigDecimal,adapter=com.google.gson.internal.bind.TypeAdapters$16@1d83398b], Factory[type=java.math.BigInteger,adapter=com.google.gson.internal.bind.TypeAdapters$17@1c314469], Factory[type=com.google.gson.internal.LazilyParsedNumber,adapter=com.google.gson.internal.bind.TypeAdapters$18@5346d00a], Factory[type=java.net.URL,adapter=com.google.gson.internal.bind.TypeAdapters$21@4cc27d37], Factory[type=java.net.URI,adapter=com.google.gson.internal.bind.TypeAdapters$22@48894a45], Factory[type=java.util.UUID,adapter=com.google.gson.internal.bind.TypeAdapters$24@5e0d4d31], Factory[type=java.util.Currency,adapter=com.google.gson.TypeAdapter$1@3b2e007a], Factory[type=java.util.Locale,adapter=com.google.gson.internal.bind.TypeAdapters$27@64daf9ed], Factory[typeHierarchy=java.net.InetAddress,adapter=com.google.gson.internal.bind.TypeAdapters$23@66834c51], Factory[type=java.util.BitSet,adapter=com.google.gson.TypeAdapter$1@52d3f175], com.google.gson.internal.bind.DateTypeAdapter$1@19351685, Factory[type=java.util.Calendar+java.util.GregorianCalendar,adapter=com.google.gson.internal.bind.TypeAdapters$26@2a9391df], com.google.gson.internal.sql.SqlTimeTypeAdapter$1@568ea118, com.google.gson.internal.sql.SqlDateTypeAdapter$1@1b9baae5, com.google.gson.internal.sql.SqlTimestampTypeAdapter$1@2aab162d, com.google.gson.internal.bind.ArrayTypeAdapter$1@1c8077ce, Factory[type=java.lang.Class,adapter=com.google.gson.TypeAdapter$1@3f258327], com.google.gson.internal.bind.CollectionTypeAdapterFactory@7fac8ac9, com.google.gson.internal.bind.MapTypeAdapterFactory@582eda1a, com.google.gson.internal.bind.JsonAdapterAnnotationTypeAdapterFactory@62e73d52, com.google.gson.internal.bind.TypeAdapters$29@7c91c73, com.google.gson.internal.bind.ReflectiveTypeAdapterFactory@c4c8b53],instanceCreators:{}}

Delete sometimes returns a V1Status message when the delete is asynchronous.

I believe that this is fixed in newer versions, please try updating to 20.0.0 and see if it reoccurs.

        apiInstance.deleteNamespacedService(getServiceName(nginxDeployBO.getServerCode(), nginxDeployBO.getAppCode()),
                nginxDeployBO.getNamespace(), null, null, null,
                null, null, null);

20.0.0

I try to use 20.0.0, 19.0.0, 18.0.0, it also reoccurs.

The Kubernetes project currently lacks enough contributors to adequately respond to all issues.

This bot triages un-triaged issues according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the issue is closed

You can:

  • Mark this issue as fresh with /remove-lifecycle stale
  • Close this issue with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

Hello, did you solve it later? @crazychengmm