Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
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!
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
Attachments
Issue Links
- links to