[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 <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Contrib: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Till Westmann <tillw@apache.org>
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);
}
}