Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 0.4.0
    • Fix Version/s: 0.5.0
    • Component/s: User Interface
    • Labels:
      None

      Description

      Quote from mailing list:

      Hi all,

      We deployed chukwa on a 5 nodescluster where hadoop's version is
      hadoop 0.20.2 and chukwa's is 0.4.0. After some logs of NameNode were
      successfully collectected and processed by chukwa, we started hicc
      server. The hicc produced files listed below on HDFS,

      1. bin/hadoop dfs -lsr /chukwa/hicc/views/
        drwxr-xr-x - root supergroup 0 2010-11-04 13:01
        /chukwa/hicc/views/public
        rw-rr- 2 root supergroup 22177 2010-11-04 13:01
        /chukwa/hicc/views/public/default.view
        rw-rr- 2 root supergroup 236 2010-11-04 13:01
        /chukwa/hicc/views/public/newview.tpl
        rw-rr- 2 root supergroup 46 2010-11-04 13:01
        /chukwa/hicc/views/public/view.permission
        rw-rr- 2 root supergroup 103 2010-11-04 13:01
        /chukwa/hicc/views/public/workspace_view_list.cache
        drwxr-xr-x - root supergroup 0 2010-11-04 13:01
        /chukwa/hicc/views/users

      We digged into the hicc.log and found that it encountered some
      exceptions about JSON.

      2010-11-04 14:00:16,954 ERROR btpool0-3 ViewBean -
      org.json.JSONException: JSONObject["owner"] not found.
      at org.json.JSONObject.get(JSONObject.java:283)
      at org.json.JSONObject.getString(JSONObject.java:409)
      at org.apache.hadoop.chukwa.rest.bean.ViewBean.<init>(ViewBean.java:62)
      at org.apache.hadoop.chukwa.datastore.ViewStore.list(ViewStore.java:217)
      at org.apache.hadoop.chukwa.rest.resource.ViewResource.getUserViewList(ViewResource.java:159)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:597)
      at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:156)
      at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:67)
      at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:166)
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:114)
      at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:74)
      at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:114)
      at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:66)
      at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:658)
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:616)
      at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:607)
      at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:309)
      /pathList
      at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)

      After further analysis, we found the problem is caused by at lines in
      ViewStore.list()

      String[] pathList = new String[2];
      pathList[0]=viewPath.toString();
      pathList[1]=publicViewPath;
      JSONArray list = new JSONArray();
      for(String path : pathList) {
      Path viewFile = new Path(path);
      try {
      FileSystem fs = FileSystem.get(config);
      FileStatus[] fstatus = fs.listStatus(viewFile);
      if(fstatus!=null) {
      for(int i=0;i<fstatus.length;i++) {
      long size = fstatus[i].getLen();
      FSDataInputStream viewStream = fs.open(fstatus[i].getPath());
      byte[] buffer = new byte[(int)size];
      viewStream.readFully(buffer);
      viewStream.close();
      try {
      ViewBean view = new ViewBean(new JSONObject(new String(buffer)));
      JSONObject json = new JSONObject();
      json.put("name", view.getName());
      json.put("type", view.getPermissionType());
      json.put("owner", view.getOwner());
      if(uid.intern()==view.getOwner().intern())

      { json.put("editable","true"); }

      else

      { json.put("editable","false"); }

      list.put(json);
      } catch (Exception e)

      { log.error(ExceptionUtil.getStackTrace(e)); }

      }
      }
      } catch (IOException ex)

      { ... }

      }

      All files of /chukwa/hicc/views/public/ would be read and then parsed
      into json objects. After that, those json objects were passed to
      ViewBean's constructor which will run
      json.getString("owner"). But there is only one file(default.view) 's
      json has this key. So the exception throwed.

        Activity

        Hide
        afathalla Ahmed Fathalla added a comment -

        Any progress on this issue, I have this exact same problem preventing me from getting any data displayed in HICC (I am using Chukwa 0.5 with HBase). If anyone can provide some guidance on the issue I can tackle it.

        Show
        afathalla Ahmed Fathalla added a comment - Any progress on this issue, I have this exact same problem preventing me from getting any data displayed in HICC (I am using Chukwa 0.5 with HBase). If anyone can provide some guidance on the issue I can tackle it.
        Hide
        eyang Eric Yang added a comment -

        Patch for checking view file for .view extendsion before parsing.

        Show
        eyang Eric Yang added a comment - Patch for checking view file for .view extendsion before parsing.
        Hide
        afathalla Ahmed Fathalla added a comment -

        I tried this patch and this exception is no longer being displayed.

        Show
        afathalla Ahmed Fathalla added a comment - I tried this patch and this exception is no longer being displayed.
        Hide
        eyang Eric Yang added a comment -

        I just committed this, thanks Ahmed.

        Show
        eyang Eric Yang added a comment - I just committed this, thanks Ahmed.

          People

          • Assignee:
            eyang Eric Yang
            Reporter:
            eyang Eric Yang
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development