You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by so...@apache.org on 2016/05/20 17:06:54 UTC
falcon git commit: FALCON-1972 Handling cases when Extension service
or extension.store.uri is not set in startup properties"
Repository: falcon
Updated Branches:
refs/heads/master fcd066a0a -> fbd9fbedb
FALCON-1972 Handling cases when Extension service or extension.store.uri is not set in startup properties"
Author: Sowmya Ramesh <sr...@hortonworks.com>
Reviewers: "Balu Vellanki <ba...@apache.org>"
Closes #152 from sowmyaramesh/FALCON-1972
Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/fbd9fbed
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/fbd9fbed
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/fbd9fbed
Branch: refs/heads/master
Commit: fbd9fbedbfbf9958b03dff47be6888fdc743ec16
Parents: fcd066a
Author: Sowmya Ramesh <so...@apache.org>
Authored: Fri May 20 10:06:50 2016 -0700
Committer: Sowmya Ramesh <sr...@hortonworks.com>
Committed: Fri May 20 10:06:50 2016 -0700
----------------------------------------------------------------------
.../falcon/extensions/ExtensionService.java | 2 ++
.../resource/extensions/ExtensionManager.java | 32 +++++++++++++++++---
webapp/src/test/resources/startup.properties | 3 +-
3 files changed, 31 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/falcon/blob/fbd9fbed/extensions/src/main/java/org/apache/falcon/extensions/ExtensionService.java
----------------------------------------------------------------------
diff --git a/extensions/src/main/java/org/apache/falcon/extensions/ExtensionService.java b/extensions/src/main/java/org/apache/falcon/extensions/ExtensionService.java
index 3b15598..d153aca 100644
--- a/extensions/src/main/java/org/apache/falcon/extensions/ExtensionService.java
+++ b/extensions/src/main/java/org/apache/falcon/extensions/ExtensionService.java
@@ -35,6 +35,8 @@ public class ExtensionService implements FalconService {
@Override
public void init() throws FalconException {
+ // Validate if extension store is setup
+ getExtensionStore();
}
@Override
http://git-wip-us.apache.org/repos/asf/falcon/blob/fbd9fbed/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java b/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java
index eda8697..92b5531 100644
--- a/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/extensions/ExtensionManager.java
@@ -29,6 +29,7 @@ import org.apache.falcon.entity.v0.process.Process;
import org.apache.falcon.extensions.AbstractExtension;
import org.apache.falcon.extensions.Extension;
import org.apache.falcon.extensions.ExtensionProperties;
+import org.apache.falcon.extensions.ExtensionService;
import org.apache.falcon.extensions.store.ExtensionStore;
import org.apache.falcon.resource.APIResult;
import org.apache.falcon.resource.AbstractSchedulableEntityManager;
@@ -36,6 +37,7 @@ import org.apache.falcon.resource.EntityList;
import org.apache.falcon.resource.ExtensionInstanceList;
import org.apache.falcon.resource.ExtensionJobList;
import org.apache.falcon.resource.InstancesResult;
+import org.apache.falcon.service.Services;
import org.apache.falcon.util.DeploymentUtil;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
@@ -79,7 +81,6 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
public static final String DESCENDING_SORT_ORDER = "desc";
private Extension extension = new Extension();
- private static final ExtensionStore STORE = ExtensionStore.get();
private static final String EXTENSION_RESULTS = "extensions";
private static final String TOTAL_RESULTS = "totalResults";
private static final String README = "README";
@@ -103,6 +104,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@DefaultValue("0") @QueryParam("offset") Integer offset,
@QueryParam("numResults") Integer resultsPerPage,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
resultsPerPage = resultsPerPage == null ? getDefaultResultsPerPage() : resultsPerPage;
try {
// get filtered entities
@@ -155,6 +157,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@DefaultValue("0") @QueryParam("offset") final Integer offset,
@QueryParam("numResults") Integer resultsPerPage,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
resultsPerPage = resultsPerPage == null ? getDefaultResultsPerPage() : resultsPerPage;
try {
List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser);
@@ -184,6 +187,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Produces({MediaType.TEXT_XML, MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON})
public APIResult schedule(@PathParam("job-name") String jobName,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser);
if (entities.isEmpty()) {
@@ -207,6 +211,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Produces({MediaType.TEXT_XML, MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON})
public APIResult suspend(@PathParam("job-name") String jobName,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser);
if (entities.isEmpty()) {
@@ -234,6 +239,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Produces({MediaType.TEXT_XML, MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON})
public APIResult resume(@PathParam("job-name") String jobName,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser);
if (entities.isEmpty()) {
@@ -261,6 +267,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Produces({MediaType.TEXT_XML, MediaType.TEXT_PLAIN, MediaType.APPLICATION_JSON})
public APIResult delete(@PathParam("job-name") String jobName,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = getEntityList("", "", "", TAG_PREFIX_EXTENSION_JOB + jobName, "", doAsUser);
if (entities.isEmpty()) {
@@ -292,6 +299,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@PathParam("extension-name") String extensionName,
@Context HttpServletRequest request,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = generateEntities(extensionName, request);
for (Entity entity : entities) {
@@ -312,6 +320,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@PathParam("extension-name") String extensionName,
@Context HttpServletRequest request,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = generateEntities(extensionName, request);
for (Entity entity : entities) {
@@ -335,6 +344,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@PathParam("extension-name") String extensionName,
@Context HttpServletRequest request,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = generateEntities(extensionName, request);
for (Entity entity : entities) {
@@ -355,6 +365,7 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@PathParam("extension-name") String extensionName,
@Context HttpServletRequest request,
@DefaultValue("") @QueryParam("doAs") String doAsUser) {
+ checkIfExtensionServiceIsEnabled();
try {
List<Entity> entities = generateEntities(extensionName, request);
for (Entity entity : entities) {
@@ -373,10 +384,11 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Path("enumerate")
@Produces({MediaType.APPLICATION_JSON})
public Response getExtensions() {
+ checkIfExtensionServiceIsEnabled();
JSONArray results;
try {
- List<String> extensions = STORE.getExtensions();
+ List<String> extensions = ExtensionStore.get().getExtensions();
results = buildEnumerateResult(extensions);
} catch (StoreAccessException e) {
LOG.error("Failed when accessing extension store.", e);
@@ -401,9 +413,10 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Produces(MediaType.TEXT_PLAIN)
public String getExtensionDescription(
@PathParam("extension-name") String extensionName) {
+ checkIfExtensionServiceIsEnabled();
validateExtensionName(extensionName);
try {
- return STORE.getResource(extensionName, README);
+ return ExtensionStore.get().getResource(extensionName, README);
} catch (Throwable e) {
throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
}
@@ -414,9 +427,10 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
@Produces({MediaType.APPLICATION_JSON})
public String getExtensionDefinition(
@PathParam("extension-name") String extensionName) {
+ checkIfExtensionServiceIsEnabled();
validateExtensionName(extensionName);
try {
- return STORE.getResource(extensionName,
+ return ExtensionStore.get().getResource(extensionName,
extensionName.toLowerCase() + EXTENSION_PROPERTY_JSON_SUFFIX);
} catch (Throwable e) {
throw FalconWebException.newAPIException(e, Response.Status.INTERNAL_SERVER_ERROR);
@@ -453,7 +467,8 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
}
private static String getShortDescription(final String extensionName) throws FalconException {
- String content = STORE.getResource(extensionName, extensionName.toLowerCase() + EXTENSION_PROPERTY_JSON_SUFFIX);
+ String content = ExtensionStore.get().getResource(extensionName, extensionName.toLowerCase()
+ + EXTENSION_PROPERTY_JSON_SUFFIX);
String description;
try {
JSONObject jsonObject = new JSONObject(content);
@@ -535,4 +550,11 @@ public class ExtensionManager extends AbstractSchedulableEntityManager {
}
return tags.substring(nameStart, nameEnd);
}
+
+ private static void checkIfExtensionServiceIsEnabled() {
+ if (!Services.get().isRegistered(ExtensionService.SERVICE_NAME)) {
+ throw FalconWebException.newAPIException(
+ ExtensionService.SERVICE_NAME + " is not enabled.", Response.Status.NOT_FOUND);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/falcon/blob/fbd9fbed/webapp/src/test/resources/startup.properties
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/startup.properties b/webapp/src/test/resources/startup.properties
index c7d7c87..fd62bc4 100644
--- a/webapp/src/test/resources/startup.properties
+++ b/webapp/src/test/resources/startup.properties
@@ -42,7 +42,8 @@
org.apache.falcon.notification.service.impl.SchedulerService,\
org.apache.falcon.notification.service.impl.AlarmService,\
org.apache.falcon.notification.service.impl.DataAvailabilityService,\
- org.apache.falcon.execution.FalconExecutionService
+ org.apache.falcon.execution.FalconExecutionService,\
+ org.apache.falcon.extensions.ExtensionService
##### Falcon Configuration Store Change listeners #####
*.configstore.listeners=org.apache.falcon.entity.v0.EntityGraph,\