samperson1997 commented on a change in pull request #1524: URL: https://github.com/apache/incubator-iotdb/pull/1524#discussion_r458809337
########## File path: server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileProcessor.java ########## @@ -241,34 +272,91 @@ public void insertTablet(InsertTabletPlan insertTabletPlan, int start, int end, workMemTable = MemTablePool.getInstance().getAvailableMemTable(this); } - // insert insertRowPlan to the work memtable - try { - workMemTable.insertTablet(insertTabletPlan, start, end); - if (IoTDBDescriptor.getInstance().getConfig().isEnableWal()) { - insertTabletPlan.setStart(start); - insertTabletPlan.setEnd(end); - getLogNode().write(insertTabletPlan); + if (workMemTable.checkIfArrayIsEnough(insertTabletPlan)) { + // insert insertRowPlan to the work memtable + try { + workMemTable.insertTablet(insertTabletPlan, start, end); + if (IoTDBDescriptor.getInstance().getConfig().isEnableWal()) { + insertTabletPlan.setStart(start); + insertTabletPlan.setEnd(end); + getLogNode().write(insertTabletPlan); + } + } catch (Exception e) { + for (int i = start; i < end; i++) { + results[i] = RpcUtils.getStatus(TSStatusCode.INTERNAL_SERVER_ERROR, e.getMessage()); + } + throw new WriteProcessException(e); } - } catch (Exception e) { + for (int i = start; i < end; i++) { - results[i] = RpcUtils.getStatus(TSStatusCode.INTERNAL_SERVER_ERROR, e.getMessage()); + results[i] = RpcUtils.SUCCESS_STATUS; + } + + tsFileResource + .updateStartTime(insertTabletPlan.getDeviceId(), insertTabletPlan.getTimes()[start]); + + //for sequence tsfile, we update the endTime only when the file is prepared to be closed. + //for unsequence tsfile, we have to update the endTime for each insertion. + if (!sequence) { + tsFileResource + .updateEndTime( + insertTabletPlan.getDeviceId(), insertTabletPlan.getTimes()[end - 1]); } - throw new WriteProcessException(e); } - - for (int i = start; i < end; i++) { - results[i] = RpcUtils.SUCCESS_STATUS; + else { + // if there are available buffered arrays in array pool + boolean isbufferedArrayEnough = true; + // TODO: isbufferedArrayEnough = checkBufferedArray(); Review comment: Take it easy!!! ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org