You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2017/07/25 09:45:02 UTC
[15/24] kylin git commit: 1653 bugfix:remove the usage that delete
resource first and then put.Use put without check (#1664)
1653 bugfix:remove the usage that delete resource first and then put.Use put without check (#1664)
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/c53ef3f0
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c53ef3f0
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c53ef3f0
Branch: refs/heads/2.1.x
Commit: c53ef3f0a71ba085fb84917a55ded0f122cf9860
Parents: cfaeb7e
Author: Jiatao Tao <24...@qq.com>
Authored: Sun Jul 23 22:17:03 2017 -0500
Committer: Hongbin Ma <ma...@apache.org>
Committed: Mon Jul 24 12:47:39 2017 +0800
----------------------------------------------------------------------
.../kylin/common/persistence/ResourceStore.java | 17 +++++++++++++++++
.../org/apache/kylin/rest/service/AclService.java | 3 +--
.../kylin/rest/service/AclTableMigrationTool.java | 8 ++++----
.../apache/kylin/rest/service/QueryService.java | 8 ++++----
.../org/apache/kylin/rest/service/UserService.java | 3 +--
5 files changed, 27 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/c53ef3f0/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
index 997424b..ac29dc0 100644
--- a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
+++ b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
@@ -223,6 +223,23 @@ abstract public class ResourceStore {
/**
* overwrite a resource without write conflict check
*/
+ final public <T extends RootPersistentEntity> void putResourceWithoutCheck(String resPath, T obj, long ts,
+ Serializer<T> serializer) throws IOException {
+ resPath = norm(resPath);
+ logger.trace("Directly saving resource " + resPath + " (Store " + kylinConfig.getMetadataUrl() + ")");
+ ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ DataOutputStream dout = new DataOutputStream(buf);
+ serializer.serialize(obj, dout);
+ dout.close();
+ buf.close();
+ ByteArrayInputStream is = new ByteArrayInputStream(buf.toByteArray());
+ putResourceCheckpoint(resPath, is, ts);
+ is.close();
+ }
+
+ /**
+ * overwrite a resource without write conflict check
+ */
final public void putResource(String resPath, InputStream content, long ts) throws IOException {
resPath = norm(resPath);
logger.trace("Directly saving resource " + resPath + " (Store " + kylinConfig.getMetadataUrl() + ")");
http://git-wip-us.apache.org/repos/asf/kylin/blob/c53ef3f0/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java b/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java
index 79ed4aa..ac5d098 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/AclService.java
@@ -232,7 +232,6 @@ public class AclService implements MutableAclService {
try {
String id = getQueryKeyById(String.valueOf(mutableAcl.getObjectIdentity().getIdentifier()));
AclRecord record = aclStore.getResource(id, AclRecord.class, SERIALIZER);
- aclStore.deleteResource(id);
if (mutableAcl.getParentAcl() != null) {
record.setParentDomainObjectInfo(new DomainObjectInfo(mutableAcl.getParentAcl().getObjectIdentity()));
}
@@ -252,7 +251,7 @@ public class AclService implements MutableAclService {
AceInfo aceInfo = new AceInfo(ace);
allAceInfo.put(String.valueOf(aceInfo.getSidInfo().getSid()), aceInfo);
}
- aclStore.putResource(id, record, 0, SERIALIZER);
+ aclStore.putResourceWithoutCheck(id, record, System.currentTimeMillis(), SERIALIZER);
logger.debug("ACL of " + mutableAcl.getObjectIdentity() + " updated successfully.");
} catch (IOException e) {
throw new InternalErrorException(e);
http://git-wip-us.apache.org/repos/asf/kylin/blob/c53ef3f0/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
index bb07c22..fe91f52 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
@@ -130,8 +130,8 @@ public class AclTableMigrationTool {
record.setOwnerInfo(getOwnerSidInfo(result));
record.setEntriesInheriting(getInheriting(result));
record.setAllAceInfo(getAllAceInfo(result));
- store.deleteResource(AclService.getQueryKeyById(object.getId()));
- store.putResource(AclService.getQueryKeyById(object.getId()), record, 0, AclService.SERIALIZER);
+ store.putResourceWithoutCheck(AclService.getQueryKeyById(object.getId()), record,
+ System.currentTimeMillis(), AclService.SERIALIZER);
result = rs.next();
}
}
@@ -148,8 +148,8 @@ public class AclTableMigrationTool {
Result result = rs.next();
while (result != null) {
ManagedUser user = hbaseRowToUser(result);
- store.deleteResource(UserService.getId(user.getUsername()));
- store.putResource(UserService.getId(user.getUsername()), user, 0, UserService.SERIALIZER);
+ store.putResourceWithoutCheck(UserService.getId(user.getUsername()), user,
+ System.currentTimeMillis(), UserService.SERIALIZER);
result = rs.next();
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/c53ef3f0/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index f3402ef..4061c82 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -186,8 +186,8 @@ public class QueryService extends BasicService {
queries.add(query);
Query[] queryArray = new Query[queries.size()];
QueryRecord record = new QueryRecord(queries.toArray(queryArray));
- queryStore.deleteResource(getQueryKeyById(creator));
- queryStore.putResource(getQueryKeyById(creator), record, 0, QueryRecordSerializer.getInstance());
+ queryStore.putResourceWithoutCheck(getQueryKeyById(creator), record, System.currentTimeMillis(),
+ QueryRecordSerializer.getInstance());
return;
}
@@ -210,8 +210,8 @@ public class QueryService extends BasicService {
}
Query[] queryArray = new Query[queries.size()];
QueryRecord record = new QueryRecord(queries.toArray(queryArray));
- queryStore.deleteResource(getQueryKeyById(creator));
- queryStore.putResource(getQueryKeyById(creator), record, 0, QueryRecordSerializer.getInstance());
+ queryStore.putResourceWithoutCheck(getQueryKeyById(creator), record, System.currentTimeMillis(),
+ QueryRecordSerializer.getInstance());
return;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/c53ef3f0/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
----------------------------------------------------------------------
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java b/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
index 6682c03..16fafa3 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/UserService.java
@@ -82,9 +82,8 @@ public class UserService implements UserDetailsManager {
Preconditions.checkState(user instanceof ManagedUser, "User {} is not ManagedUser", user);
ManagedUser managedUser = (ManagedUser) user;
try {
- deleteUser(user.getUsername());
String id = getId(user.getUsername());
- aclStore.putResource(id, managedUser, 0, SERIALIZER);
+ aclStore.putResourceWithoutCheck(id, managedUser, System.currentTimeMillis(), SERIALIZER);
logger.trace("update user : {}", user.getUsername());
} catch (IOException e) {
throw new InternalErrorException(e);