Skip to content

JsonSyntaxException when getting the stats for a subscription  #355

@zailushangde

Description

@zailushangde

The Nakadi consumer (V0.14.0) throws the exception, when trying to get the statistics by nakadiClient.resources.subscriptions().stats(subscriptionId):

nakadi.shadow.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at nakadi.shadow.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
at nakadi.shadow.com.google.gson.Gson.fromJson(Gson.java:887)
at nakadi.shadow.com.google.gson.Gson.fromJson(Gson.java:852)
at nakadi.shadow.com.google.gson.Gson.fromJson(Gson.java:801)
at nakadi.shadow.com.google.gson.Gson.fromJson(Gson.java:773)
at nakadi.GsonSupport.fromJson(GsonSupport.java:73)
at nakadi.ProblemSupport.toProblem(ProblemSupport.java:9)
at nakadi.OkHttpResource.handleError(OkHttpResource.java:314)
at nakadi.OkHttpResource.throwIfError(OkHttpResource.java:301)
at nakadi.OkHttpResource.requestThrowingInner(OkHttpResource.java:168)
at nakadi.OkHttpResource.requestThrowingInner(OkHttpResource.java:177)
at nakadi.OkHttpResource.lambda$requestThrowing$2(OkHttpResource.java:113)
at nakadi.shadow.io.reactivex.internal.operators.observable.ObservableDefer.subscribeActual(ObservableDefer.java:32)
at nakadi.shadow.io.reactivex.Observable.subscribe(Observable.java:10842)
at nakadi.shadow.io.reactivex.Observable.blockingFirst(Observable.java:4727)
at nakadi.OkHttpResource.requestThrowing(OkHttpResource.java:113)
at nakadi.SubscriptionResourceReal.loadStatsPage(SubscriptionResourceReal.java:232)
at nakadi.SubscriptionResourceReal.stats(SubscriptionResourceReal.java:167)
at nakadiClient.resources.subscriptions().stats(subscriptionId)
...
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at nakadi.shadow.com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
at nakadi.shadow.com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
... 32 common frames omitted

However, it returns the expected payload by calling the API directly:

http https://$HOST/subscriptions/$SUS_ID/stats Authorization:"Bearer $token)"
HTTP/1.1 200 OK
{
    "items": [
        {
            "event_type": "xxxx",
            "partitions": [
                {
                    "assignment_type": "auto",
                    "partition": "0",
                    "state": "assigned",
                    "stream_id": "xxx",
                    "unconsumed_events": 100
                },
...
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions