You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by zh...@apache.org on 2020/04/23 01:00:57 UTC
[incubator-doris] branch master updated: [Bug] `isQuery` field
should be reset at the beginning of query execution (#3374)
This is an automated email from the ASF dual-hosted git repository.
zhaoc pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
The following commit(s) were added to refs/heads/master by this push:
new d854a79 [Bug] `isQuery` field should be reset at the beginning of query execution (#3374)
d854a79 is described below
commit d854a79878f93e74ce0758a175782ae802f8be77
Author: Mingyu Chen <mo...@gmail.com>
AuthorDate: Thu Apr 23 09:00:47 2020 +0800
[Bug] `isQuery` field should be reset at the beginning of query execution (#3374)
If not reset, all queries comes from same session will have save isQuery field value.
This bug will cause all entries in fe.audit.log has same IsQuery=true.
This CL also fix another bug:
The resolved IPs of domain of a user should not appear in other user's white list. Fix #3380
---
.../cn/administrator-guide/segment-v2-usage.md | 2 +-
fe/src/main/java/org/apache/doris/catalog/Catalog.java | 2 +-
.../java/org/apache/doris/catalog/DomainResolver.java | 8 ++++----
fe/src/main/java/org/apache/doris/catalog/OlapTable.java | 7 +++++++
.../java/org/apache/doris/mysql/privilege/PaloAuth.java | 4 ++--
.../apache/doris/mysql/privilege/UserPropertyMgr.java | 16 ++--------------
.../java/org/apache/doris/mysql/privilege/WhiteList.java | 7 ++++++-
fe/src/main/java/org/apache/doris/qe/QueryState.java | 1 +
8 files changed, 24 insertions(+), 23 deletions(-)
diff --git a/docs/documentation/cn/administrator-guide/segment-v2-usage.md b/docs/documentation/cn/administrator-guide/segment-v2-usage.md
index 1c821a1..09b6f0c 100644
--- a/docs/documentation/cn/administrator-guide/segment-v2-usage.md
+++ b/docs/documentation/cn/administrator-guide/segment-v2-usage.md
@@ -62,7 +62,7 @@ V2 格式的表可以支持以下新的特性:
```
## 创建 V2 格式的 Rollup
-
+
ALTER TABLE table_name ADD ROLLUP table_name (columns) PROPERTIES ("storage_format" = "v2");
```
diff --git a/fe/src/main/java/org/apache/doris/catalog/Catalog.java b/fe/src/main/java/org/apache/doris/catalog/Catalog.java
index bc6e827..6bbc643 100644
--- a/fe/src/main/java/org/apache/doris/catalog/Catalog.java
+++ b/fe/src/main/java/org/apache/doris/catalog/Catalog.java
@@ -3971,7 +3971,7 @@ public class Catalog {
// storage type
sb.append(",\n\"").append(PropertyAnalyzer.PROPERTIES_STORAGE_FORMAT).append("\" = \"");
- sb.append(olapTable.getTableProperty().getStorageFormat()).append("\"");
+ sb.append(olapTable.getStorageFormat()).append("\"");
sb.append("\n)");
} else if (table.getType() == TableType.MYSQL) {
diff --git a/fe/src/main/java/org/apache/doris/catalog/DomainResolver.java b/fe/src/main/java/org/apache/doris/catalog/DomainResolver.java
index 00ae925..d5d22a6 100644
--- a/fe/src/main/java/org/apache/doris/catalog/DomainResolver.java
+++ b/fe/src/main/java/org/apache/doris/catalog/DomainResolver.java
@@ -55,13 +55,13 @@ public class DomainResolver extends MasterDaemon {
// 'public' for test
@Override
public void runAfterCatalogReady() {
- // domain name -> set of user names
- Map<String, Set<String>> domainMap = Maps.newHashMap();
- auth.getDomainMap(domainMap);
+ // domain names
+ Set<String> allDomains = Sets.newHashSet();
+ auth.getAllDomains(allDomains);
// resolve domain name
Map<String, Set<String>> resolvedIPsMap = Maps.newHashMap();
- for (String domain : domainMap.keySet()) {
+ for (String domain : allDomains) {
LOG.debug("begin to resolve domain: {}", domain);
Set<String> resolvedIPs = Sets.newHashSet();
if (!resolveWithBNS(domain, resolvedIPs) && !resolveWithDNS(domain, resolvedIPs)) {
diff --git a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java
index 719e29e..fe252dd 100644
--- a/fe/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -1470,4 +1470,11 @@ public class OlapTable extends Table {
tableProperty.modifyTableProperties(PropertyAnalyzer.PROPERTIES_STORAGE_FORMAT, storageFormat.name());
tableProperty.buildStorageFormat();
}
+
+ public TStorageFormat getStorageFormat() {
+ if (tableProperty == null) {
+ return TStorageFormat.DEFAULT;
+ }
+ return tableProperty.getStorageFormat();
+ }
}
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java b/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java
index cf87486..d888ed4 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/PaloAuth.java
@@ -851,10 +851,10 @@ public class PaloAuth implements Writable {
}
}
- public void getDomainMap(Map<String, Set<String>> domainMap) {
+ public void getAllDomains(Set<String> allDomains) {
readLock();
try {
- propertyMgr.getDomainMap(domainMap);
+ propertyMgr.getAllDomains(allDomains);
} finally {
readUnlock();
}
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java b/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java
index ec27f64..b36b217 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/UserPropertyMgr.java
@@ -28,7 +28,6 @@ import org.apache.doris.thrift.TFetchResourceResult;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -181,22 +180,11 @@ public class UserPropertyMgr implements Writable {
}
// return a map from domain name -> set of user names
- public void getDomainMap(Map<String, Set<String>> domainMap) {
+ public void getAllDomains(Set<String> allDomains) {
LOG.debug("get property map: {}", propertyMap);
for (Map.Entry<String, UserProperty> entry : propertyMap.entrySet()) {
Set<String> domains = entry.getValue().getWhiteList().getAllDomains();
- if (domains.isEmpty()) {
- continue;
- }
-
- for (String domain : domains) {
- Set<String> usernames = domainMap.get(domain);
- if (usernames == null) {
- usernames = Sets.newHashSet();
- domainMap.put(domain, usernames);
- }
- usernames.add(entry.getKey());
- }
+ allDomains.addAll(domains);
}
}
diff --git a/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java b/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java
index eb2ca80..ceeb543 100644
--- a/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java
+++ b/fe/src/main/java/org/apache/doris/mysql/privilege/WhiteList.java
@@ -68,11 +68,16 @@ public class WhiteList implements Writable {
// it will only modify password entry of these resolved IPs. All other privileges are binded
// to the domain, so no need to modify.
public void addUserPrivEntriesByResovledIPs(String user, Map<String, Set<String>> resolvedIPsMap) {
+ // the parameter "resolvedIPsMap" contains all resolved domains.
+ // "newResolvedIPsMap" will only save the domains contained in this white list.
+ Map<String, Set<String>> newResolvedIPsMap = Maps.newHashMap();
for (Map.Entry<String, Set<String>> entry : resolvedIPsMap.entrySet()) {
if (!containsDomain(entry.getKey())) {
continue;
}
+ newResolvedIPsMap.put(entry.getKey(), entry.getValue());
+
// this user ident will be saved along with each resolved "IP" user ident, so that when checking
// password, this "domain" user ident will be returned as "current user".
UserIdentity domainUserIdent = UserIdentity.createAnalyzedUserIdentWithDomain(user, entry.getKey());
@@ -93,7 +98,7 @@ public class WhiteList implements Writable {
}
// set new resolved IPs
- this.resolvedIPsMap = resolvedIPsMap;
+ this.resolvedIPsMap = newResolvedIPsMap;
}
public Map<String, Set<String>> getResolvedIPs() {
diff --git a/fe/src/main/java/org/apache/doris/qe/QueryState.java b/fe/src/main/java/org/apache/doris/qe/QueryState.java
index bc6e424..09fe321 100644
--- a/fe/src/main/java/org/apache/doris/qe/QueryState.java
+++ b/fe/src/main/java/org/apache/doris/qe/QueryState.java
@@ -56,6 +56,7 @@ public class QueryState {
errorCode = null;
infoMessage = null;
serverStatus = 0;
+ isQuery = false;
}
public MysqlStateType getStateType() {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org