This is an automated email from the ASF dual-hosted git repository.

nic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 80384da925e7b284eea461d21754ebc2d7695c66
Author: XiaoxiangYu <hit_la...@126.com>
AuthorDate: Sat Sep 21 22:25:26 2019 +0800

    KYLIN-4167 Fix minor bug
---
 build/conf/kylin-server-log4j.properties           |  12 +-
 .../kylin/storage/gtrecord/CubeTupleConverter.java |   2 +-
 .../optrule/visitor/TimezoneRewriteVisitor.java    | 152 ---------------------
 .../relnode/visitor/TupleFilterVisitorTest.java    |   9 +-
 .../coordinator/coordinate/BuildJobSubmitter.java  |   7 +-
 .../coordinate/StreamingCoordinator.java           |   3 +-
 6 files changed, 18 insertions(+), 167 deletions(-)

diff --git a/build/conf/kylin-server-log4j.properties 
b/build/conf/kylin-server-log4j.properties
index 0b3cef9..e4d204f 100644
--- a/build/conf/kylin-server-log4j.properties
+++ b/build/conf/kylin-server-log4j.properties
@@ -29,14 +29,4 @@ log4j.appender.file.MaxBackupIndex=10
 log4j.rootLogger=INFO,file
 log4j.logger.org.apache.kylin=DEBUG
 log4j.logger.org.springframework=WARN
-log4j.logger.org.springframework.security=INFO
-
-# Realtime OLAP config
-log4j.appender.realtime=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.realtime.layout=org.apache.log4j.PatternLayout
-log4j.appender.realtime.File=${catalina.home}/../logs/kylin_coordinator.log
-log4j.appender.realtime.layout.ConversionPattern=%d{ISO8601} %-5p [%t] 
%c{2}:%L : %m%n
-log4j.appender.realtime.Append=true
-log4j.appender.realtime.MaxFileSize=268435456
-log4j.appender.realtime.MaxBackupIndex=10
-log4j.logger.org.apache.kylin.stream.*=DEBUG, realtime
\ No newline at end of file
+log4j.logger.org.springframework.security=INFO
\ No newline at end of file
diff --git 
a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeTupleConverter.java
 
b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeTupleConverter.java
index 2e04daa..94734b3 100644
--- 
a/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeTupleConverter.java
+++ 
b/core-storage/src/main/java/org/apache/kylin/storage/gtrecord/CubeTupleConverter.java
@@ -163,7 +163,7 @@ public class CubeTupleConverter implements ITupleConverter {
             int ti = tupleIdx[i];
             if (ti >= 0) {
                 // add offset to return result according to timezone
-                if (autoJustByTimezone && timestampColumn.contains(i)) {
+                if (autoJustByTimezone && timestampColumn.contains(ti)) {
                     try {
                         String v = toString(gtValues[i]);
                         if (v != null) {
diff --git 
a/query/src/main/java/org/apache/kylin/query/optrule/visitor/TimezoneRewriteVisitor.java
 
b/query/src/main/java/org/apache/kylin/query/optrule/visitor/TimezoneRewriteVisitor.java
deleted file mode 100644
index 731ee00..0000000
--- 
a/query/src/main/java/org/apache/kylin/query/optrule/visitor/TimezoneRewriteVisitor.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.kylin.query.optrule.visitor;
-
-import org.apache.calcite.rex.RexCall;
-import org.apache.calcite.rex.RexCorrelVariable;
-import org.apache.calcite.rex.RexDynamicParam;
-import org.apache.calcite.rex.RexFieldAccess;
-import org.apache.calcite.rex.RexInputRef;
-import org.apache.calcite.rex.RexLiteral;
-import org.apache.calcite.rex.RexLocalRef;
-import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.rex.RexOver;
-import org.apache.calcite.rex.RexPatternFieldRef;
-import org.apache.calcite.rex.RexRangeRef;
-import org.apache.calcite.rex.RexSubQuery;
-import org.apache.calcite.rex.RexTableInputRef;
-import org.apache.calcite.rex.RexVisitorImpl;
-import org.apache.calcite.sql.SqlKind;
-import org.apache.calcite.sql.type.SqlTypeFamily;
-import org.apache.calcite.sql.type.SqlTypeName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-public class TimezoneRewriteVisitor extends RexVisitorImpl<RexNode> {
-    public static final Logger logger = 
LoggerFactory.getLogger(TimezoneRewriteVisitor.class);
-
-    public TimezoneRewriteVisitor(boolean deep) {
-        super(deep);
-    }
-
-    @Override
-    public RexNode visitCall(RexCall call) {
-        List<RexNode> subList = new ArrayList<>();
-        SqlTypeName type = call.getType().getSqlTypeName();
-        if (call.getKind() == SqlKind.CAST) {
-            if (type.getFamily() == SqlTypeFamily.DATE || type.getFamily() == 
SqlTypeFamily.DATETIME
-                    || type.getFamily() == SqlTypeFamily.TIMESTAMP) {
-                for (RexNode node : call.getOperands()) {
-                    if (node instanceof RexLiteral) {
-                        RexLiteral literal = (RexLiteral) node;
-                        String toBeModify = literal.getValue2().toString();
-                        logger.info(toBeModify);
-                        if (toBeModify.length() != 19) {
-                            subList.add(node);
-                            continue;
-                        }
-                        // minus offset by timezone in RelNode level
-                        // this will affect code gen
-                        int minusHours = 0;
-                        String afetrModify = LocalDateTime
-                                .parse(toBeModify, 
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", 
Locale.ROOT)).minusHours(minusHours)
-                                
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ROOT));
-                        logger.info("{}  ->  {}", toBeModify, afetrModify);
-                        RexLiteral newliteral = 
RexLiteral.fromJdbcString(literal.getType(), literal.getTypeName(),
-                                afetrModify);
-                        subList.add(newliteral);
-                    } else {
-                        subList.add(node);
-                    }
-                }
-            }
-            return call.clone(call.type, subList);
-        }
-
-        for (RexNode operand : call.operands) {
-            RexNode node = operand.accept(this);
-            subList.add(node);
-        }
-        return call.clone(call.type, subList);
-    }
-
-    @Override
-    public RexNode visitLiteral(RexLiteral literal) {
-        return literal;
-    }
-
-    @Override
-    public RexNode visitInputRef(RexInputRef inputRef) {
-        return inputRef;
-    }
-
-    @Override
-    public RexNode visitLocalRef(RexLocalRef localRef) {
-        return localRef;
-    }
-
-    @Override
-    public RexNode visitOver(RexOver over) {
-        return over;
-    }
-
-    @Override
-    public RexNode visitCorrelVariable(RexCorrelVariable correlVariable) {
-        return correlVariable;
-    }
-
-    @Override
-    public RexNode visitDynamicParam(RexDynamicParam dynamicParam) {
-        return dynamicParam;
-    }
-
-    @Override
-    public RexNode visitRangeRef(RexRangeRef rangeRef) {
-        return rangeRef;
-    }
-
-    @Override
-    public RexNode visitFieldAccess(RexFieldAccess fieldAccess) {
-        return fieldAccess;
-    }
-
-    @Override
-    public RexNode visitSubQuery(RexSubQuery subQuery) {
-        return subQuery;
-    }
-
-    @Override
-    public RexNode visitTableInputRef(RexTableInputRef ref) {
-        return ref;
-    }
-
-    @Override
-    public RexNode visitPatternFieldRef(RexPatternFieldRef fieldRef) {
-        return fieldRef;
-    }
-
-    public static void main(String[] args) {
-
-    }
-}
diff --git 
a/query/src/test/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitorTest.java
 
b/query/src/test/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitorTest.java
index 352dfab..99c4645 100644
--- 
a/query/src/test/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitorTest.java
+++ 
b/query/src/test/java/org/apache/kylin/query/relnode/visitor/TupleFilterVisitorTest.java
@@ -19,6 +19,7 @@
 package org.apache.kylin.query.relnode.visitor;
 
 import com.google.common.collect.Lists;
+import org.apache.kylin.common.util.LocalFileMetadataTestCase;
 import org.apache.kylin.metadata.filter.ColumnTupleFilter;
 import org.apache.kylin.metadata.filter.CompareTupleFilter;
 import org.apache.kylin.metadata.filter.ConstantTupleFilter;
@@ -26,9 +27,15 @@ import org.apache.kylin.metadata.filter.LogicalTupleFilter;
 import org.apache.kylin.metadata.filter.TupleFilter;
 import org.apache.kylin.metadata.model.TblColRef;
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
-public class TupleFilterVisitorTest {
+public class TupleFilterVisitorTest extends LocalFileMetadataTestCase {
+
+    @BeforeClass
+    public static void setupResource() {
+        staticCreateTestMetadata();
+    }
 
     @Test
     public void testMergeToInClause1() {
diff --git 
a/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/BuildJobSubmitter.java
 
b/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/BuildJobSubmitter.java
index cf3771b..9e32f46 100644
--- 
a/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/BuildJobSubmitter.java
+++ 
b/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/BuildJobSubmitter.java
@@ -104,7 +104,12 @@ public class BuildJobSubmitter implements Runnable {
                 buildInfos = previousValue;
             }
         }
-        buildInfos.add(segmentBuildJob);
+        boolean addSucceed = buildInfos.add(segmentBuildJob);
+        if (!addSucceed) {
+            logger.debug("Add {} failed because we have a duplicated one.", 
segmentBuildJob);
+            buildInfos.remove(segmentBuildJob);
+            buildInfos.add(segmentBuildJob);
+        }
     }
 
     void addToCheckList(String cubeName) {
diff --git 
a/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/StreamingCoordinator.java
 
b/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/StreamingCoordinator.java
index 875a4d7..7c3c575 100644
--- 
a/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/StreamingCoordinator.java
+++ 
b/stream-coordinator/src/main/java/org/apache/kylin/stream/coordinator/coordinate/StreamingCoordinator.java
@@ -237,7 +237,8 @@ public class StreamingCoordinator implements 
CoordinatorClient {
     @Override
     public void segmentRemoteStoreComplete(Node receiver, String cubeName, 
Pair<Long, Long> segment) {
         checkLead();
-        logger.info("Segment remote store complete signal received for 
cube:{}, segment:{}", cubeName, segment);
+        logger.info("Segment remote store complete signal received for 
cube:{}, segment:{}, by {}.", cubeName, segment,
+                receiver);
         buildJobSubmitter.addToCheckList(cubeName);
     }
 

Reply via email to