Hi all!
I am running 2.x-staging branch with the newest code.
when I create a new cube and save , got the exception like this:

2015-12-15 23:12:15,338 ERROR [http-bio-7070-exec-4] controller.CubeController: 
The cube definition is not valid.
com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize 
instance of java.lang.String out of START_ARRAY token
 at [Source: java.io.StringReader@6f7f51cb; line: 10, column: 22] (through 
reference chain: 
org.apache.kylin.cube.model.CubeDesc["dimensions"]->org.apache.kylin.cube.model.DimensionDesc["column"])
        at 
com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164)
        at 
com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:575)
        at 
com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:46)
        at 
com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)
        at 
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:464)
        at 
com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:107)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
        at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:230)
        at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:207)
        at 
com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:23)
        at 
com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:464)
        at 
com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:107)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295)
        at 
com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)
        at 
com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)
        at 
com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)
        at org.apache.kylin.common.util.JsonUtil.readValue(JsonUtil.java:54)
        at 
org.apache.kylin.rest.controller.CubeController.deserializeCubeDesc(CubeController.java:699)
        at 
org.apache.kylin.rest.controller.CubeController.saveCubeDesc(CubeController.java:327)

cube json :
"dimensions": [
    {
      "name": "KYLIN.TEST_DATA_TYPE.DIM_COL",
      "table": "KYLIN.TEST_DATA_TYPE",
      "hierarchy": false,
      "derived": null,
      "column": [
        "DIM_COL"
      ],
      "id": 1
    },
    {
      "name": "KYLIN.TEST_DATA_TYPE.DT_COL",
      "table": "KYLIN.TEST_DATA_TYPE",
      "hierarchy": false,
      "derived": null,
      "column": [
        "DT_COL"
      ],
      "id": 2
    }
  ],

in the json, the dimension’s “column" property is Array type.
but in the org.apache.kylin.cube.model.DimensionDesc.java the column is a 
String type.
    @JsonProperty("name")
    private String name;
    @JsonProperty("table")
    private String table;
    @JsonProperty("column")
    private String column;
    @JsonProperty("derived")
    private String[] derived;
and I see the org.apache.kylin.cube.model.v3.DimensionDesc.java is match the 
json from save.
    @JsonProperty("id")
    private int id;
    @JsonProperty("name")
    private String name;
    @JsonProperty("hierarchy")
    private boolean isHierarchy;
    @JsonProperty("table")
    private String table;
    @JsonProperty("column")
    private String[] column;
    @JsonProperty("derived")
    private String[] derived;

Is the meta version change? and how to use the v3 version metadata?

Reply via email to