Uploaded image for project: 'Kylin'
  1. Kylin
  2. KYLIN-3060

The logical processing of creating or updating streaming table has a bug in server, which will cause a NullPointerException.

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: v2.3.0
    • Component/s: NRT Streaming
    • Labels:
    • Flags:
      Patch

      Description

      When you set the invalid parameter for creating or updating a streaming table, the client will show an error message dialog, refer to create_non_interger_ID.png and edit_non_interger_ID.png.
      I analyze the Kylin server log, there are some null pointer exceptions, then I analyze the StreamingController.java, whose logical processing of streaming table has a bug, which will cause a NullPointerException.
      eg. When the streamingRequest.getKafkaConfig() has a invalid pamamter, the kafkaConfig will be null, then "if (desc.getUuid() == null || desc.getName() == null) " in function "org.apache.kylin.source.kafka.KafkaConfigManager.updateKafkaConfig" will cause the NullPointerException.

      public StreamingRequest updateStreamingConfig(@RequestBody StreamingRequest streamingRequest) throws JsonProcessingException {
        ......
        KafkaConfig kafkaConfig = deserializeKafkaSchemalDesc(streamingRequest);
        ......
        kafkaConfig = kafkaConfigService.updateKafkaConfig(kafkaConfig, project);
        ......
      }
      
          private KafkaConfig deserializeKafkaSchemalDesc(StreamingRequest streamingRequest) {
              KafkaConfig desc = null;
              try {
                  logger.debug("Saving KafkaConfig " + streamingRequest.getKafkaConfig());
                  desc = JsonUtil.readValue(streamingRequest.getKafkaConfig(), KafkaConfig.class);
              } catch (JsonParseException e) {
                  logger.error("The KafkaConfig definition is invalid.", e);
                  updateRequest(streamingRequest, false, e.getMessage());
              } catch (JsonMappingException e) {
                  logger.error("The data KafkaConfig definition is invalid.", e);
                  updateRequest(streamingRequest, false, e.getMessage());
              } catch (IOException e) {
                  logger.error("Failed to deal with the request.", e);
                  throw new InternalErrorException("Failed to deal with the request:" + e.getMessage(), e);
              }
              return desc;
          }
      
          public StreamingConfig updateStreamingConfig(StreamingConfig config, String project) throws IOException {
              aclEvaluate.checkProjectAdminPermission(project);
              return getStreamingManager().updateStreamingConfig(config);
          }
      
          public StreamingConfig updateStreamingConfig(StreamingConfig desc) throws IOException {
              // Validate CubeDesc
              if (desc.getUuid() == null || desc.getName() == null) {
          ......
         }
      

      So I have repaired it, then the client will tell you the detail error message( refer to after_repaired.png), the server no longer throws an null point exception.
      you can check the patch, thanks!

      Kylin server log

      2017-11-24 18:38:00,702 ERROR [http-bio-7070-exec-14] controller.StreamingController:202 : Failed to deal with the request:null
      java.lang.NullPointerException
      at org.apache.kylin.source.kafka.KafkaConfigManager.updateKafkaConfig(KafkaConfigManager.java:156)
      at org.apache.kylin.rest.service.KafkaConfigService.updateKafkaConfig(KafkaConfigService.java:84)
      at org.apache.kylin.rest.controller.StreamingController.updateStreamingConfig(StreamingController.java:198)

        Attachments

        1. 0001-KYLIN-3060-The-logical-processing-of-creating-or-upd.patch
          4 kB
          peng.jianhua
        2. after_repaired.png
          75 kB
          peng.jianhua
        3. edit_non_interger_ID.png
          44 kB
          peng.jianhua
        4. create_non_interger_ID.png
          37 kB
          peng.jianhua

          Activity

            People

            • Assignee:
              peng.jianhua peng.jianhua
              Reporter:
              peng.jianhua peng.jianhua
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: