Murtadha Hubail has submitted this change and it was merged. Change subject: [NO ISSUE][OTH] Add Creation Time to Client Request ......................................................................
[NO ISSUE][OTH] Add Creation Time to Client Request - user model changes: no - storage format changes: no - interface changes: no Details: - Add creation time to ClientRequest to identify when the request was acknowledged by the CC. - Allow Receptionist extensions to throw exceptions as specified by the IReceptionist API. - Allow extensions to set non-json request optional parameters. - Add convention method in ResourceReference to get the resource's fully qualified dataset name. - Fix typo in metadata provider method name. Change-Id: Ib45b5bec8bb2f127aa1263d4f7ac4f8e2e368208 Reviewed-on: https://asterix-gerrit.ics.uci.edu/3217 Sonar-Qube: Jenkins <[email protected]> Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Contrib: Jenkins <[email protected]> Reviewed-by: Till Westmann <[email protected]> --- M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java M asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java M asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java M asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ResourceReference.java M asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java 5 files changed, 21 insertions(+), 5 deletions(-) Approvals: Anon. E. Moose #1000171: Till Westmann: Looks good to me, approved Jenkins: Verified; No violations found; ; Verified diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java index 155b817..c19bb02 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/ClientRequest.java @@ -28,6 +28,7 @@ public class ClientRequest extends BaseClientRequest { + protected final long creationTime = System.nanoTime(); protected final Thread executor; protected final String statement; protected final String clientContextId; @@ -70,6 +71,10 @@ } } + public long getCreationTime() { + return creationTime; + } + @Override protected ObjectNode asJson() { ObjectNode json = super.asJson(); diff --git a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java index 52aab20..ec4fb6f 100644 --- a/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java +++ b/asterixdb/asterix-algebra/src/main/java/org/apache/asterix/translator/Receptionist.java @@ -27,6 +27,7 @@ import org.apache.asterix.common.api.ISchedulableClientRequest; import org.apache.asterix.common.api.RequestReference; import org.apache.http.HttpHeaders; +import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.http.api.IServletRequest; import org.apache.hyracks.util.NetworkUtil; @@ -48,12 +49,12 @@ } @Override - public IClientRequest requestReceived(ICommonRequestParameters requestParameters) { + public IClientRequest requestReceived(ICommonRequestParameters requestParameters) throws HyracksDataException { return new ClientRequest(requestParameters); } @Override - public void ensureSchedulable(ISchedulableClientRequest schedulableRequest) { + public void ensureSchedulable(ISchedulableClientRequest schedulableRequest) throws HyracksDataException { // currently we don't have any restrictions } } diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java index ffbb614..b4513ec 100644 --- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java +++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/api/http/server/QueryServiceServlet.java @@ -424,7 +424,7 @@ GlobalConfig.ASTERIX_LOGGER.log(Level.ERROR, e.getMessage(), e); } } else { - setParamFromRequest(request, param); + setParamFromRequest(request, param, optionalParams); } } @@ -456,7 +456,8 @@ // allows extensions to set extra parameters } - private void setParamFromRequest(IServletRequest request, QueryServiceRequestParameters param) throws IOException { + private void setParamFromRequest(IServletRequest request, QueryServiceRequestParameters param, + Map<String, String> optionalParameters) throws IOException { param.setStatement(getParameter(request, Parameter.STATEMENT)); if (param.getStatement() == null) { param.setStatement(HttpUtil.getRequestBody(request)); @@ -476,6 +477,11 @@ } catch (JsonParseException | JsonMappingException e) { GlobalConfig.ASTERIX_LOGGER.log(Level.ERROR, e.getMessage(), e); } + setOptionalParameters(request, optionalParameters); + } + + protected void setOptionalParameters(IServletRequest request, Map<String, String> optionalParameters) { + // allows extensions to set extra parameters } private void setAccessControlHeaders(IServletRequest request, IServletResponse response) throws IOException { diff --git a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ResourceReference.java b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ResourceReference.java index a24bf72..ae949fe 100644 --- a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ResourceReference.java +++ b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/storage/ResourceReference.java @@ -105,6 +105,10 @@ return Integer.parseInt(partition.substring(StorageConstants.PARTITION_DIR_PREFIX.length())); } + public String getDatasetFullyQualifiedName() { + return dataverse + '.' + dataset; + } + @Override public boolean equals(Object o) { if (this == o) { diff --git a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java index adfaa89..7b93b6b 100644 --- a/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java +++ b/asterixdb/asterix-metadata/src/main/java/org/apache/asterix/metadata/declared/MetadataProvider.java @@ -1632,7 +1632,7 @@ txnAccessedDatasets.add(dataset); } - public Set<Dataset> getAccssedDatasets() { + public Set<Dataset> getAccessedDatasets() { return Collections.unmodifiableSet(txnAccessedDatasets); } } -- To view, visit https://asterix-gerrit.ics.uci.edu/3217 To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ib45b5bec8bb2f127aa1263d4f7ac4f8e2e368208 Gerrit-PatchSet: 4 Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Owner: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Anon. E. Moose #1000171 Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Till Westmann <[email protected]>
