You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@jclouds.apache.org by "BK Lau (JIRA)" <ji...@apache.org> on 2014/12/03 20:33:12 UTC

[jira] [Commented] (JCLOUDS-783) Docker remote API.inspect() call results in java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAY

    [ https://issues.apache.org/jira/browse/JCLOUDS-783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14233402#comment-14233402 ] 

BK Lau commented on JCLOUDS-783:
--------------------------------

Andrea:

Snapshot 2.0.0 from pull 113 failed. 
To repro is easy:

1. Do a docker image pull  for https://registry.hub.docker.com/_/nginx/
   Just do a pull "docker pull nginx"

2. Run the container:
"docker run --name nginx1 -d nginx"

3. Run the code below(I used Eclipse 4.0 Luna/JDK 1.8 and  pull 113 is the **ONLY Project** I have in the workspace,  no other third-party libs/jars)

public class DockerTest1 {
   private final Set<Module> modules = ImmutableSet.<Module> of(new ExecutorServiceModule(sameThreadExecutor(),
         sameThreadExecutor()));

   protected String provider;

   public DockerTest1() {
      provider = "docker";
   }

   public DockerApi api(URL url) {
      return ContextBuilder.newBuilder(provider)
            .credentials("clientid", "apikey")
            .endpoint(url.toString())
           // .modules(modules)
            //.overrides(setupProperties())
            .buildApi(DockerApi.class);
   }

   protected Properties setupProperties() {
      return new Properties();
   }

  public static void main(String[] args) throws Exception{
	  URL url = new URL("http://myhost:2375");
	  DockerTest1 test = new DockerTest1();
	  DockerApi docker_api=test.api(url);
	  ContainerApi cont_api=docker_api.getContainerApi();
	  Container c=cont_api.inspectContainer("nginx1");
	  System.out.println(c.toString());
  }

}

4. The error is :
=========================================================
Dec 03, 2014 2:21:17 PM org.jclouds.logging.jdk.JDKLogger logError
SEVERE: Error parsing input
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was NULL at line 1 column 1607 path $.NetworkSettings.Ports.
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:190)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:272)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:184)
	at com.google.gson.Gson.fromJson(Gson.java:805)
	at com.google.gson.Gson.fromJson(Gson.java:770)
	at com.google.gson.Gson.fromJson(Gson.java:719)
	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:42)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:82)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:76)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:62)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:42)
	at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
	at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
	at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
	at com.sun.proxy.$Proxy48.inspectContainer(Unknown Source)
	at org.jclouds.docker.internal.DockerTest1.main(DockerTest1.java:80)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was NULL at line 1 column 1607 path $.NetworkSettings.Ports.
	at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:351)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:88)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:82)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:61)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:311)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:281)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:272)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:184)
	... 17 more

Exception in thread "main" java.lang.IllegalStateException: Expected BEGIN_ARRAY but was NULL at line 1 column 1607 path $.NetworkSettings.Ports.
	at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:351)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.readAndBuild(NullFilteringTypeAdapterFactories.java:88)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:82)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$IterableTypeAdapter.read(NullFilteringTypeAdapterFactories.java:61)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:311)
	at org.jclouds.json.internal.NullFilteringTypeAdapterFactories$MapTypeAdapter.read(NullFilteringTypeAdapterFactories.java:281)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:272)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:184)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$ParameterReader.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:272)
	at org.jclouds.json.internal.DeserializationConstructorAndReflectiveTypeAdapterFactory$DeserializeIntoParameterizedConstructor.read(DeserializationConstructorAndReflectiveTypeAdapterFactory.java:184)
	at com.google.gson.Gson.fromJson(Gson.java:805)
	at com.google.gson.Gson.fromJson(Gson.java:770)
	at com.google.gson.Gson.fromJson(Gson.java:719)
	at org.jclouds.json.internal.GsonWrapper.fromJson(GsonWrapper.java:42)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:82)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:76)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:62)
	at org.jclouds.http.functions.ParseJson.apply(ParseJson.java:42)
	at org.jclouds.rest.internal.InvokeHttpMethod.invoke(InvokeHttpMethod.java:90)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:73)
	at org.jclouds.rest.internal.InvokeHttpMethod.apply(InvokeHttpMethod.java:44)
	at org.jclouds.reflect.FunctionalReflection$FunctionalInvocationHandler.handleInvocation(FunctionalReflection.java:117)
	at com.google.common.reflect.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:87)
	at com.sun.proxy.$Proxy48.inspectContainer(Unknown Source)
	at org.jclouds.docker.internal.DockerTest1.main(DockerTest1.java:80)


> Docker remote API.inspect() call results in java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAY
> ----------------------------------------------------------------------------------------------------------------
>
>                 Key: JCLOUDS-783
>                 URL: https://issues.apache.org/jira/browse/JCLOUDS-783
>             Project: jclouds
>          Issue Type: Bug
>          Components: jclouds-labs
>    Affects Versions: 1.8.0
>         Environment: Docker 1.3.1, ubuntu 14.04
>            Reporter: BK Lau
>            Assignee: Andrea Turli
>              Labels: docker, inspect
>             Fix For: 2.0.0
>
>
> I run NGINX from https://registry.hub.docker.com/_/nginx/ and tried doing
> an inspect on a running container based on above nginx using Docker version 1.3.1 on ubuntu 14.04, I got consistently JSON parsing errors:
> java.lang.IllegalStateException: Expected STRING but was BEGIN_ARRAY
> I attached sample error logs and Docker CLI inspect



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)