usergrid git commit: USERGRID-1044: make jsonPath extraction optional to keep users from exiting
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 1a6de02ab -> 3c60c49a1 USERGRID-1044: make jsonPath extraction optional to keep users from exiting Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/3c60c49a Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/3c60c49a Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/3c60c49a Branch: refs/heads/USERGRID-1044 Commit: 3c60c49a157be63ec626ff88666472f2d4876554 Parents: 1a6de02 Author: Mike DunkerAuthored: Tue Oct 27 08:52:17 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 08:52:17 2015 -0700 -- .../org/apache/usergrid/helpers/Extractors.scala | 18 +++--- 1 file changed, 11 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/3c60c49a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala index 136a561..b21f9d7 100644 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala @@ -37,7 +37,7 @@ object Extractors { jsonPath("$.cursor").transformOption(extract => { //it may or may not be present. If it is, save it, otherwise save it as an empty string extract.orElse(Some("")) -}).saveAs(saveAsName) +}).optional.saveAs(saveAsName) } /** @@ -47,7 +47,7 @@ object Extractors { jsonPath("$.entities[0].uuid").transformOption(extract => { //it may or may not be present. If it is, save it, otherwise save it as an empty string extract.orElse(Some("")) -}).saveAs(saveAsName) +}).optional.saveAs(saveAsName) } /** @@ -57,7 +57,7 @@ object Extractors { jsonPath("$.entities[0].name").transformOption(extract => { //it may or may not be present. If it is, save it, otherwise save it as an empty string extract.orElse(Some("")) -}).saveAs(saveAsName) +}).optional.saveAs(saveAsName) } /** @@ -67,21 +67,25 @@ object Extractors { jsonPath("$.entities[0].modified").ofType[Long].transformOption(extract => { //it may or may not be present. If it is, save it, otherwise save it as -1 extract.orElse(Some(-1)) -}).saveAs(saveAsName) +}).optional.saveAs(saveAsName) } /** * Will extract the audit entities from the get collection response. */ def extractAuditEntities(saveAsName: String) = { - jsonPath("$.entities[*]").ofType[Map[String,Any]].findAll.transformOption(extract => { extract.orElse(Some(Seq.empty)) }).saveAs(saveAsName) + jsonPath("$.entities[*]").ofType[Map[String,Any]].findAll.transformOption(extract => { + extract.orElse(Some(Seq.empty)) +}).optional.saveAs(saveAsName) } /** * Will extract the audit entities from the get collection response. */ def extractAuditEntity(saveAsName: String) = { - jsonPath("$.entities[0]").ofType[Map[String,Any]].findAll.transformOption(extract => { extract.orElse(Some(Seq.empty)) }).saveAs(saveAsName) + jsonPath("$.entities[0]").ofType[Map[String,Any]].findAll.transformOption(extract => { + extract.orElse(Some(Seq.empty)) +}).optional.saveAs(saveAsName) } /** @@ -100,7 +104,7 @@ object Extractors { def maybeExtractEntities(saveAsName: String) = { jsonPath("$.entities").ofType[Seq[Any]].transformOption(extract => { extract.orElse(Some(Seq())) -}).saveAs(saveAsName) +}).optional.saveAs(saveAsName) } /**
[1/2] usergrid git commit: Moves system endpoints into the system package
Repository: usergrid Updated Branches: refs/heads/USERGRID-1064 3b436243e -> 7a4f36ab9 http://git-wip-us.apache.org/repos/asf/usergrid/blob/7a4f36ab/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java -- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java new file mode 100644 index 000..c5a6dbc --- /dev/null +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java @@ -0,0 +1,270 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.usergrid.rest.system; + + +import java.util.Map; +import java.util.Set; + +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriInfo; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager; +import org.apache.usergrid.persistence.core.migration.schema.MigrationManager; +import org.apache.usergrid.rest.AbstractContextResource; +import org.apache.usergrid.rest.ApiResponse; +import org.apache.usergrid.rest.security.annotations.RequireSystemAccess; + +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.base.Preconditions; +import com.google.inject.Injector; +import com.sun.jersey.api.json.JSONWithPadding; + + +@Component +@Scope( "singleton" ) +@Produces( { +MediaType.APPLICATION_JSON, +"application/javascript", +"application/x-javascript", +"text/ecmascript", +"application/ecmascript", +"text/jscript" +} ) +public class MigrateResource extends AbstractContextResource { + +private static final Logger logger = LoggerFactory.getLogger( MigrateResource.class ); + +public MigrateResource() { +logger.info( "SystemResource initialized" ); +} + +@Autowired +private Injector guiceInjector; + +@RequireSystemAccess +@PUT +@Path( "run" ) +public JSONWithPadding migrateData( @Context UriInfo ui, +@QueryParam( "callback" ) @DefaultValue( "callback" ) String callback ) +throws Exception { + +ApiResponse response = createApiResponse(); +response.setAction( "Migrate Data" ); +//TODO make this use the task scheduler + + +final Thread migrate = new Thread() { + +@Override +public void run() { + +logger.info( "Migrating Schema" ); + +try { +getMigrationManager().migrate(); +} +catch ( Exception e ) { +logger.error( "Unable to migrate data", e ); +} + +logger.info( "Migrating Data" ); + +try { +getDataMigrationManager().migrate(); +} +catch ( Exception e ) { +logger.error( "Unable to migrate data", e ); +} +} +}; + +migrate.setName( "Index migrate data formats" ); +migrate.setDaemon( true ); +migrate.start(); + +response.setSuccess(); + +return new JSONWithPadding( response, callback ); +} + +@RequireSystemAccess +@PUT +@Path( "run/{pluginName}" ) +public JSONWithPadding migrateData(@PathParam("pluginName") String pluginName , @Context UriInfo ui, +@QueryParam( "callback" ) @DefaultValue( "callback" ) String callback ) +throws Exception { + +if(!getDataMigrationManager().pluginExists(pluginName)){ +throw new IllegalArgumentException("Plugin doesn't exits name:"+pluginName); +} + +ApiResponse response = createApiResponse(); +response.setAction( "Migrate Data: "+ pluginName ); +
[1/5] usergrid git commit: First pass. Need to test.
Repository: usergrid Updated Branches: refs/heads/2.1-release 2aec8a0fa -> e018c1e0d First pass. Need to test. Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/e41b5f02 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/e41b5f02 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/e41b5f02 Branch: refs/heads/2.1-release Commit: e41b5f02eb12f72b9c19e5ae079b32d528951b47 Parents: 07d2ad3 Author: Todd NineAuthored: Mon Oct 26 16:24:37 2015 -0600 Committer: Todd Nine Committed: Mon Oct 26 16:24:37 2015 -0600 -- .../service/StatusServiceImpl.java | 3 +- .../usergrid/rest/ConnectionResource.java | 198 +++ .../apache/usergrid/rest/SystemResource.java| 5 + 3 files changed, 205 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/e41b5f02/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/StatusServiceImpl.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/StatusServiceImpl.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/StatusServiceImpl.java index 93fe653..282929e 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/StatusServiceImpl.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/service/StatusServiceImpl.java @@ -93,8 +93,9 @@ public class StatusServiceImpl implements StatusService { final MapManager mapManager = mapManagerFactory.createMapManager(new MapScopeImpl(appId, "status")); try { String statusVal = mapManager.getString(jobString + statusKey); +//nothing to emit if(statusVal==null){ -subscriber.onNext(null); +subscriber.onCompleted(); }else { final Map data = MAPPER.readValue(mapManager.getString(jobString + dataKey), Map.class); final Status status = Status.valueOf(statusVal); http://git-wip-us.apache.org/repos/asf/usergrid/blob/e41b5f02/stack/rest/src/main/java/org/apache/usergrid/rest/ConnectionResource.java -- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/ConnectionResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/ConnectionResource.java new file mode 100644 index 000..b6a38e1 --- /dev/null +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/ConnectionResource.java @@ -0,0 +1,198 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.usergrid.rest; + + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicLong; + +import javax.ws.rs.DefaultValue; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.MediaType; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import org.apache.usergrid.corepersistence.service.ConnectionService; +import org.apache.usergrid.corepersistence.service.ConnectionServiceImpl; +import org.apache.usergrid.corepersistence.service.StatusService; +import org.apache.usergrid.corepersistence.util.CpNamingUtils; +import org.apache.usergrid.persistence.core.scope.ApplicationScope; +import org.apache.usergrid.persistence.index.utils.UUIDUtils; +import org.apache.usergrid.persistence.model.util.UUIDGenerator; +import org.apache.usergrid.rest.security.annotations.RequireSystemAccess; + +import com.google.common.base.Preconditions; +import com.sun.jersey.api.json.JSONWithPadding; + +import rx.Observable;
usergrid git commit: USERGRID-1044: attempt #2 to preprocess response body
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 2778f0a0b -> 4b2d00355 USERGRID-1044: attempt #2 to preprocess response body Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/4b2d0035 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/4b2d0035 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/4b2d0035 Branch: refs/heads/USERGRID-1044 Commit: 4b2d00355e5645ab5c158b4c4f8e228037879af4 Parents: 2778f0a Author: Mike DunkerAuthored: Tue Oct 27 11:29:16 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 11:29:16 2015 -0700 -- .../usergrid/scenarios/EntityCollectionScenarios.scala | 13 - 1 file changed, 4 insertions(+), 9 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/4b2d0035/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala index bcdb49a..f37a2d2 100644 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala @@ -223,15 +223,10 @@ object EntityCollectionScenarios { .transformResponse { case response if response.isReceived => new ResponseWrapper(response) { - override val body = { -val contentType = response.header("content-type").getOrElse("").toLowerCase -if (contentType.contains("json")) { - StringResponseBody(response.body.string, response.charset) -} else { - StringResponseBody("{}", StandardCharsets.UTF_8) -} - } - } + val contentType = response.header("content-type").getOrElse("").toLowerCase + val bodyStr = if (contentType.contains("json")) response.body.string else "[]" + override val body = StringResponseBody(bodyStr, response.charset) +} } // 200 for success, 400 if already exists .check(status.saveAs(SessionVarStatus), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified)))
[5/5] usergrid git commit: Merge commit 'refs/pull/414/head' of github.com:apache/usergrid into 2.1-release
Merge commit 'refs/pull/414/head' of github.com:apache/usergrid into 2.1-release Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/e018c1e0 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/e018c1e0 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/e018c1e0 Branch: refs/heads/2.1-release Commit: e018c1e0d65e3af339e36c69a4e59fe2d2a83167 Parents: 2aec8a0 7a4f36a Author: Michael RussoAuthored: Tue Oct 27 10:54:04 2015 -0700 Committer: Michael Russo Committed: Tue Oct 27 10:54:04 2015 -0700 -- .../service/StatusServiceImpl.java | 3 +- .../usergrid/rest/ApplicationsResource.java | 178 -- .../apache/usergrid/rest/DatabaseResource.java | 98 -- .../org/apache/usergrid/rest/IndexResource.java | 328 -- .../apache/usergrid/rest/MigrateResource.java | 268 --- .../apache/usergrid/rest/SystemResource.java| 103 -- .../rest/system/ApplicationsResource.java | 178 ++ .../rest/system/ConnectionResource.java | 202 +++ .../usergrid/rest/system/DatabaseResource.java | 100 ++ .../usergrid/rest/system/IndexResource.java | 331 +++ .../usergrid/rest/system/MigrateResource.java | 270 +++ .../usergrid/rest/system/SystemResource.java| 108 ++ 12 files changed, 1191 insertions(+), 976 deletions(-) --
usergrid git commit: USERGRID-1044: transform payload to empty JSON if non-json
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 3c60c49a1 -> 2778f0a0b USERGRID-1044: transform payload to empty JSON if non-json Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/2778f0a0 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/2778f0a0 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/2778f0a0 Branch: refs/heads/USERGRID-1044 Commit: 2778f0a0b196bfc09e914033392ccb49271136e0 Parents: 3c60c49 Author: Mike DunkerAuthored: Tue Oct 27 10:49:44 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 10:49:44 2015 -0700 -- .../org/apache/usergrid/helpers/Extractors.scala | 2 +- .../scenarios/EntityCollectionScenarios.scala | 17 + 2 files changed, 18 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/2778f0a0/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala index b21f9d7..4c6ac8d 100644 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/helpers/Extractors.scala @@ -85,7 +85,7 @@ object Extractors { def extractAuditEntity(saveAsName: String) = { jsonPath("$.entities[0]").ofType[Map[String,Any]].findAll.transformOption(extract => { extract.orElse(Some(Seq.empty)) -}).optional.saveAs(saveAsName) +}).saveAs(saveAsName) } /** http://git-wip-us.apache.org/repos/asf/usergrid/blob/2778f0a0/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala index ecd0c21..bcdb49a 100644 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala @@ -16,9 +16,13 @@ */ package org.apache.usergrid.scenarios +import java.nio.charset.StandardCharsets + import io.gatling.core.Predef._ import io.gatling.core.feeder.RecordSeqFeederBuilder import io.gatling.http.Predef._ +import io.gatling.http.response.ResponseWrapper +import io.gatling.http.response.StringResponseBody import org.apache.usergrid.datagenerators.FeederGenerator import org.apache.usergrid.enums.{CsvFeedPatternType, EndConditionType, AuthType} import org.apache.usergrid.helpers.Extractors._ @@ -216,6 +220,19 @@ object EntityCollectionScenarios { .headers(Headers.authToken) .headers(Headers.usergridRegionHeaders) .body(StringBody("""${entity}""")) +.transformResponse { + case response if response.isReceived => +new ResponseWrapper(response) { + override val body = { +val contentType = response.header("content-type").getOrElse("").toLowerCase +if (contentType.contains("json")) { + StringResponseBody(response.body.string, response.charset) +} else { + StringResponseBody("{}", StandardCharsets.UTF_8) +} + } + } +} // 200 for success, 400 if already exists .check(status.saveAs(SessionVarStatus), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified))) .exec(session => {
[4/5] usergrid git commit: Moves system endpoints into the system package
Moves system endpoints into the system package Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/7a4f36ab Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/7a4f36ab Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/7a4f36ab Branch: refs/heads/2.1-release Commit: 7a4f36ab9c0e504133f80f4d0ad8a70d115ee4f4 Parents: 3b43624 Author: Todd NineAuthored: Tue Oct 27 09:46:06 2015 -0600 Committer: Todd Nine Committed: Tue Oct 27 09:46:06 2015 -0600 -- .../usergrid/rest/ApplicationsResource.java | 178 -- .../usergrid/rest/ConnectionResource.java | 199 --- .../apache/usergrid/rest/DatabaseResource.java | 98 -- .../org/apache/usergrid/rest/IndexResource.java | 328 -- .../apache/usergrid/rest/MigrateResource.java | 268 --- .../apache/usergrid/rest/SystemResource.java| 108 -- .../rest/system/ApplicationsResource.java | 178 ++ .../rest/system/ConnectionResource.java | 202 +++ .../usergrid/rest/system/DatabaseResource.java | 100 ++ .../usergrid/rest/system/IndexResource.java | 331 +++ .../usergrid/rest/system/MigrateResource.java | 270 +++ .../usergrid/rest/system/SystemResource.java| 108 ++ 12 files changed, 1189 insertions(+), 1179 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/7a4f36ab/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java -- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java deleted file mode 100644 index 55cf0f6..000 --- a/stack/rest/src/main/java/org/apache/usergrid/rest/ApplicationsResource.java +++ /dev/null @@ -1,178 +0,0 @@ -/* - * - * * Licensed to the Apache Software Foundation (ASF) under one or more - * * contributor license agreements. The ASF licenses this file to You - * * under the Apache License, Version 2.0 (the "License"); you may not - * * use this file except in compliance with the License. - * * You may obtain a copy of the License at - * * - * * http://www.apache.org/licenses/LICENSE-2.0 - * * - * * Unless required by applicable law or agreed to in writing, software - * * distributed under the License is distributed on an "AS IS" BASIS, - * * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * * See the License for the specific language governing permissions and - * * limitations under the License. For additional information regarding - * * copyright in this work, please see the NOTICE file in the top level - * * directory of this distribution. - * - */ -package org.apache.usergrid.rest; - -import com.sun.jersey.api.json.JSONWithPadding; -import org.apache.usergrid.corepersistence.service.StatusService; -import org.apache.usergrid.persistence.Entity; -import org.apache.usergrid.persistence.EntityManager; -import org.apache.usergrid.persistence.core.util.StringUtils; -import org.apache.usergrid.persistence.model.util.UUIDGenerator; -import org.apache.usergrid.rest.security.annotations.RequireSystemAccess; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import javax.ws.rs.*; -import javax.ws.rs.core.Context; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.UriInfo; -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * Classy class class. - */ -@Component -@Scope( "singleton" ) -@Produces( { -MediaType.APPLICATION_JSON, "application/javascript", "application/x-javascript", "text/ecmascript", -"application/ecmascript", "text/jscript" -} ) -public class ApplicationsResource extends AbstractContextResource { - -private static final Logger logger = LoggerFactory.getLogger(ApplicationsResource.class); - - -public ApplicationsResource() { - -logger.info( "ApplicationsResource initialized" ); -} { - -} - -@RequireSystemAccess -@DELETE -@Path( "{applicationId}" ) -public JSONWithPadding clearApplication( @Context UriInfo ui, - @PathParam("applicationId") UUID applicationId, - @QueryParam( "confirmApplicationName" ) String confirmApplicationName, - @QueryParam( "limit" ) int limit, - @QueryParam( "callback" ) @DefaultValue(
[3/5] usergrid git commit: Moves system endpoints into the system package
http://git-wip-us.apache.org/repos/asf/usergrid/blob/7a4f36ab/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java -- diff --git a/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java b/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java new file mode 100644 index 000..c5a6dbc --- /dev/null +++ b/stack/rest/src/main/java/org/apache/usergrid/rest/system/MigrateResource.java @@ -0,0 +1,270 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.usergrid.rest.system; + + +import java.util.Map; +import java.util.Set; + +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.UriInfo; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Component; + +import org.apache.usergrid.persistence.core.migration.data.DataMigrationManager; +import org.apache.usergrid.persistence.core.migration.schema.MigrationManager; +import org.apache.usergrid.rest.AbstractContextResource; +import org.apache.usergrid.rest.ApiResponse; +import org.apache.usergrid.rest.security.annotations.RequireSystemAccess; + +import com.fasterxml.jackson.databind.node.JsonNodeFactory; +import com.fasterxml.jackson.databind.node.ObjectNode; +import com.google.common.base.Preconditions; +import com.google.inject.Injector; +import com.sun.jersey.api.json.JSONWithPadding; + + +@Component +@Scope( "singleton" ) +@Produces( { +MediaType.APPLICATION_JSON, +"application/javascript", +"application/x-javascript", +"text/ecmascript", +"application/ecmascript", +"text/jscript" +} ) +public class MigrateResource extends AbstractContextResource { + +private static final Logger logger = LoggerFactory.getLogger( MigrateResource.class ); + +public MigrateResource() { +logger.info( "SystemResource initialized" ); +} + +@Autowired +private Injector guiceInjector; + +@RequireSystemAccess +@PUT +@Path( "run" ) +public JSONWithPadding migrateData( @Context UriInfo ui, +@QueryParam( "callback" ) @DefaultValue( "callback" ) String callback ) +throws Exception { + +ApiResponse response = createApiResponse(); +response.setAction( "Migrate Data" ); +//TODO make this use the task scheduler + + +final Thread migrate = new Thread() { + +@Override +public void run() { + +logger.info( "Migrating Schema" ); + +try { +getMigrationManager().migrate(); +} +catch ( Exception e ) { +logger.error( "Unable to migrate data", e ); +} + +logger.info( "Migrating Data" ); + +try { +getDataMigrationManager().migrate(); +} +catch ( Exception e ) { +logger.error( "Unable to migrate data", e ); +} +} +}; + +migrate.setName( "Index migrate data formats" ); +migrate.setDaemon( true ); +migrate.start(); + +response.setSuccess(); + +return new JSONWithPadding( response, callback ); +} + +@RequireSystemAccess +@PUT +@Path( "run/{pluginName}" ) +public JSONWithPadding migrateData(@PathParam("pluginName") String pluginName , @Context UriInfo ui, +@QueryParam( "callback" ) @DefaultValue( "callback" ) String callback ) +throws Exception { + +if(!getDataMigrationManager().pluginExists(pluginName)){ +throw new IllegalArgumentException("Plugin doesn't exits name:"+pluginName); +} + +ApiResponse response = createApiResponse(); +response.setAction( "Migrate Data: "+ pluginName ); +//TODO make this use the task scheduler + + + + +final Thread migrate = new Thread() {
usergrid git commit: Change read repair to interact with c* directly and only fire and index operation message to get the ES document removed from all regions.
Repository: usergrid Updated Branches: refs/heads/delete-event-updates 70d7a9586 -> 1b43bda3f Change read repair to interact with c* directly and only fire and index operation message to get the ES document removed from all regions. Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/1b43bda3 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/1b43bda3 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/1b43bda3 Branch: refs/heads/delete-event-updates Commit: 1b43bda3f801172b0e59f927ff3ae52a559d36cc Parents: 70d7a95 Author: Michael RussoAuthored: Tue Oct 27 10:50:16 2015 -0700 Committer: Michael Russo Committed: Tue Oct 27 12:56:13 2015 -0700 -- .../asyncevents/AsyncEventService.java | 5 ++ .../asyncevents/InMemoryAsyncEventService.java | 5 ++ .../read/traverse/AbstractReadGraphFilter.java | 69 +--- .../traverse/ReadGraphCollectionFilter.java | 10 ++- .../traverse/ReadGraphConnectionFilter.java | 10 ++- .../impl/stage/NodeDeleteListenerImpl.java | 27 6 files changed, 97 insertions(+), 29 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/1b43bda3/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java index dcfffcb..dbf8996 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java @@ -77,6 +77,11 @@ public interface AsyncEventService extends ReIndexAction { */ void queueEntityDelete(final ApplicationScope applicationScope, final Id entityId); +/** + * + * @param indexOperationMessage + */ +void queueIndexOperationMessage( final IndexOperationMessage indexOperationMessage ); /** * current queue depth http://git-wip-us.apache.org/repos/asf/usergrid/blob/1b43bda3/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java index fc6385c..d8334b3 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java @@ -105,6 +105,11 @@ public class InMemoryAsyncEventService implements AsyncEventService { run( results.getCompactedNode() ); } +@Override +public void queueIndexOperationMessage(final IndexOperationMessage indexOperationMessage){ +//this is not used locally +} + public void index( final ApplicationScope applicationScope, final Id id, final long updatedSince ) { final EntityIndexOperation entityIndexOperation = new EntityIndexOperation( applicationScope, id, updatedSince ); http://git-wip-us.apache.org/repos/asf/usergrid/blob/1b43bda3/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java index 9d050c8..89230d7 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java @@ -20,7 +20,11 @@ package org.apache.usergrid.corepersistence.pipeline.read.traverse; +import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService; +import org.apache.usergrid.corepersistence.asyncevents.EventBuilder; +import org.apache.usergrid.corepersistence.asyncevents.EventBuilderImpl; import org.apache.usergrid.persistence.core.rx.RxTaskScheduler; +import org.apache.usergrid.persistence.index.impl.IndexOperationMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +46,7 @@ import com.google.common.base.Optional;
[1/2] usergrid git commit: USERGRID-1044: handle audit for CSV rows that don't have UUIDs by accessing via name
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 4b2d00355 -> be0033eac USERGRID-1044: handle audit for CSV rows that don't have UUIDs by accessing via name Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/9158772b Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/9158772b Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/9158772b Branch: refs/heads/USERGRID-1044 Commit: 9158772bc20befa8affa6c1bc10af032a07d0400 Parents: 4b2d003 Author: Mike DunkerAuthored: Tue Oct 27 12:46:48 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 12:46:48 2015 -0700 -- .../org/apache/usergrid/datagenerators/FeederGenerator.scala| 5 - .../scala/org/apache/usergrid/scenarios/AuditScenarios.scala| 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/9158772b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala index b8a28d5..73b3d3c 100755 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/datagenerators/FeederGenerator.scala @@ -280,8 +280,11 @@ object FeederGenerator { val uuid = if (line != null) array(2) else "" val modified = if (line != null) array(3) else "" //println(s"$collectionName|$name|$uuid|$modified") + val accessField = if (uuid != "") uuid else name + val queryField = if (uuid != "") s"uuid='$uuid'" else s"name='$name'" - Map("collectionName" -> collectionName, "name" -> name, "uuid" -> uuid, "modified" -> modified, "validEntity" -> validEntity) + Map("collectionName" -> collectionName, "name" -> name, "uuid" -> uuid, "modified" -> modified, +"validEntity" -> validEntity, "accessField" -> accessField, "queryField" -> queryField) } } http://git-wip-us.apache.org/repos/asf/usergrid/blob/9158772b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala index f90348e..7a93eb6 100644 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/AuditScenarios.scala @@ -144,7 +144,7 @@ object AuditScenarios { val getCollectionEntityDirect = exec( http("GET collection entity direct") - .get("/${collectionName}/${uuid}") + .get("/${collectionName}/${accessField}") .headers(Headers.authToken) .headers(Headers.usergridRegionHeaders) .check() @@ -213,7 +213,7 @@ object AuditScenarios { val getCollectionEntity = exec( http("GET collection entity") - .get("/${collectionName}?ql=uuid=${uuid}") + .get("/${collectionName}?ql=${queryField}") .headers(Headers.authToken) .headers(Headers.usergridRegionHeaders) .check(status.is(200), status.saveAs(SessionVarStatus), jsonPath("$.count").optional.saveAs("count"),
usergrid git commit: Updates the message flow to allow for multiple processor threads per SQS take thread
Repository: usergrid Updated Branches: refs/heads/delete-event-updates 1b43bda3f -> 76476f17c Updates the message flow to allow for multiple processor threads per SQS take thread Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/76476f17 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/76476f17 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/76476f17 Branch: refs/heads/delete-event-updates Commit: 76476f17cf8e8be6f01660db3d21110eda8247f5 Parents: 1b43bda Author: Todd NineAuthored: Tue Oct 27 14:35:34 2015 -0600 Committer: Todd Nine Committed: Tue Oct 27 14:35:34 2015 -0600 -- .../asyncevents/AmazonAsyncEventService.java| 68 +++- .../index/IndexProcessorFig.java| 13 +++- 2 files changed, 51 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/76476f17/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java index d93e304..6b9abbc 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java @@ -679,35 +679,45 @@ public class AmazonAsyncEventService implements AsyncEventService { } while ( true ); } -} ) -//this won't block our read loop, just reads and proceeds -.map( messages -> { -if ( messages == null || messages.size() == 0 ) { -return null; -} - -try { -List indexEventResults = callEventHandlers( messages ); -List messagesToAck = submitToIndex( indexEventResults ); -if ( messagesToAck == null || messagesToAck.size() == 0 ) { -logger.error( "No messages came back from the queue operation should have seen " -+ messages.size(), messages ); -return messagesToAck; -} -if ( messagesToAck.size() < messages.size() ) { -logger.error( "Missing messages from queue post operation", messages, -messagesToAck ); -} -//ack each message, but only if we didn't error. -ack( messagesToAck ); -return messagesToAck; -} -catch ( Exception e ) { -logger.error( "failed to ack messages to sqs", e ); -return null; -//do not rethrow so we can process all of them -} -} ); +} )//this won't block our read loop, just reads and proceeds +.flatMap( sqsMessages -> { + +//do this on a different schedule, and introduce concurrency with flatmap for faster processing +return Observable.just( sqsMessages ) + + .map( messages -> { + if ( messages == null || messages.size() == 0 ) { + return null; + } + + try { + List indexEventResults = + callEventHandlers( messages ); + List messagesToAck = + submitToIndex( indexEventResults ); + if ( messagesToAck == null || messagesToAck.size() == 0 ) { +
[2/4] usergrid git commit: Change read repair to interact with c* directly and only fire and index operation message to get the ES document removed from all regions.
Change read repair to interact with c* directly and only fire and index operation message to get the ES document removed from all regions. Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/1b43bda3 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/1b43bda3 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/1b43bda3 Branch: refs/heads/2.1-release Commit: 1b43bda3f801172b0e59f927ff3ae52a559d36cc Parents: 70d7a95 Author: Michael RussoAuthored: Tue Oct 27 10:50:16 2015 -0700 Committer: Michael Russo Committed: Tue Oct 27 12:56:13 2015 -0700 -- .../asyncevents/AsyncEventService.java | 5 ++ .../asyncevents/InMemoryAsyncEventService.java | 5 ++ .../read/traverse/AbstractReadGraphFilter.java | 69 +--- .../traverse/ReadGraphCollectionFilter.java | 10 ++- .../traverse/ReadGraphConnectionFilter.java | 10 ++- .../impl/stage/NodeDeleteListenerImpl.java | 27 6 files changed, 97 insertions(+), 29 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/1b43bda3/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java index dcfffcb..dbf8996 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AsyncEventService.java @@ -77,6 +77,11 @@ public interface AsyncEventService extends ReIndexAction { */ void queueEntityDelete(final ApplicationScope applicationScope, final Id entityId); +/** + * + * @param indexOperationMessage + */ +void queueIndexOperationMessage( final IndexOperationMessage indexOperationMessage ); /** * current queue depth http://git-wip-us.apache.org/repos/asf/usergrid/blob/1b43bda3/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java index fc6385c..d8334b3 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/InMemoryAsyncEventService.java @@ -105,6 +105,11 @@ public class InMemoryAsyncEventService implements AsyncEventService { run( results.getCompactedNode() ); } +@Override +public void queueIndexOperationMessage(final IndexOperationMessage indexOperationMessage){ +//this is not used locally +} + public void index( final ApplicationScope applicationScope, final Id id, final long updatedSince ) { final EntityIndexOperation entityIndexOperation = new EntityIndexOperation( applicationScope, id, updatedSince ); http://git-wip-us.apache.org/repos/asf/usergrid/blob/1b43bda3/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java index 9d050c8..89230d7 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/pipeline/read/traverse/AbstractReadGraphFilter.java @@ -20,7 +20,11 @@ package org.apache.usergrid.corepersistence.pipeline.read.traverse; +import org.apache.usergrid.corepersistence.asyncevents.AsyncEventService; +import org.apache.usergrid.corepersistence.asyncevents.EventBuilder; +import org.apache.usergrid.corepersistence.asyncevents.EventBuilderImpl; import org.apache.usergrid.persistence.core.rx.RxTaskScheduler; +import org.apache.usergrid.persistence.index.impl.IndexOperationMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -42,6 +46,7 @@ import com.google.common.base.Optional; import rx.Observable; + /** * Command for reading graph edges */ @@ -51,15 +56,21 @@ public abstract
[4/4] usergrid git commit: Merge branch 'delete-event-updates' into 2.1-release
Merge branch 'delete-event-updates' into 2.1-release Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/26860545 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/26860545 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/26860545 Branch: refs/heads/2.1-release Commit: 26860545ece19361569370bc63496a01bb48738d Parents: e018c1e 76476f1 Author: Todd NineAuthored: Tue Oct 27 14:40:23 2015 -0600 Committer: Todd Nine Committed: Tue Oct 27 14:40:23 2015 -0600 -- .../asyncevents/AmazonAsyncEventService.java| 68 ++ .../asyncevents/AsyncEventService.java | 5 ++ .../asyncevents/InMemoryAsyncEventService.java | 5 ++ .../index/IndexProcessorFig.java| 13 +++- .../read/traverse/AbstractReadGraphFilter.java | 72 +--- .../traverse/ReadGraphCollectionFilter.java | 10 ++- .../traverse/ReadGraphConnectionFilter.java | 10 ++- .../impl/stage/NodeDeleteListenerImpl.java | 27 +++- 8 files changed, 150 insertions(+), 60 deletions(-) --
[3/4] usergrid git commit: Updates the message flow to allow for multiple processor threads per SQS take thread
Updates the message flow to allow for multiple processor threads per SQS take thread Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/76476f17 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/76476f17 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/76476f17 Branch: refs/heads/2.1-release Commit: 76476f17cf8e8be6f01660db3d21110eda8247f5 Parents: 1b43bda Author: Todd NineAuthored: Tue Oct 27 14:35:34 2015 -0600 Committer: Todd Nine Committed: Tue Oct 27 14:35:34 2015 -0600 -- .../asyncevents/AmazonAsyncEventService.java| 68 +++- .../index/IndexProcessorFig.java| 13 +++- 2 files changed, 51 insertions(+), 30 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/76476f17/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java -- diff --git a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java index d93e304..6b9abbc 100644 --- a/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java +++ b/stack/core/src/main/java/org/apache/usergrid/corepersistence/asyncevents/AmazonAsyncEventService.java @@ -679,35 +679,45 @@ public class AmazonAsyncEventService implements AsyncEventService { } while ( true ); } -} ) -//this won't block our read loop, just reads and proceeds -.map( messages -> { -if ( messages == null || messages.size() == 0 ) { -return null; -} - -try { -List indexEventResults = callEventHandlers( messages ); -List messagesToAck = submitToIndex( indexEventResults ); -if ( messagesToAck == null || messagesToAck.size() == 0 ) { -logger.error( "No messages came back from the queue operation should have seen " -+ messages.size(), messages ); -return messagesToAck; -} -if ( messagesToAck.size() < messages.size() ) { -logger.error( "Missing messages from queue post operation", messages, -messagesToAck ); -} -//ack each message, but only if we didn't error. -ack( messagesToAck ); -return messagesToAck; -} -catch ( Exception e ) { -logger.error( "failed to ack messages to sqs", e ); -return null; -//do not rethrow so we can process all of them -} -} ); +} )//this won't block our read loop, just reads and proceeds +.flatMap( sqsMessages -> { + +//do this on a different schedule, and introduce concurrency with flatmap for faster processing +return Observable.just( sqsMessages ) + + .map( messages -> { + if ( messages == null || messages.size() == 0 ) { + return null; + } + + try { + List indexEventResults = + callEventHandlers( messages ); + List messagesToAck = + submitToIndex( indexEventResults ); + if ( messagesToAck == null || messagesToAck.size() == 0 ) { + logger.error( + "No messages came back from
Git Push Summary
Repository: usergrid Updated Branches: refs/heads/USERGRID-1064 [deleted] 7a4f36ab9
usergrid git commit: USERGRID-1044: print non-200s during load (including body)
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 83d7a6f83 -> 038974475 USERGRID-1044: print non-200s during load (including body) Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/03897447 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/03897447 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/03897447 Branch: refs/heads/USERGRID-1044 Commit: 0389744752f479d215f84ebbd5f25aa36d2108a4 Parents: 83d7a6f Author: Mike DunkerAuthored: Tue Oct 27 14:59:10 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 14:59:10 2015 -0700 -- .../usergrid/scenarios/EntityCollectionScenarios.scala | 8 +++- 1 file changed, 7 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/03897447/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala index f37a2d2..d5b3101 100644 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/scenarios/EntityCollectionScenarios.scala @@ -42,6 +42,7 @@ object EntityCollectionScenarios { val SessionVarStatus: String = "status" val SessionVarUuid: String = "createUuid" val SessionVarModified: String = "createModified" + val SessionVarBodyString: String = "bodyString" def entityGetUrl(useCursor: Boolean): String = { val url = s"/${Settings.collection}?" + @@ -225,11 +226,12 @@ object EntityCollectionScenarios { new ResponseWrapper(response) { val contentType = response.header("content-type").getOrElse("").toLowerCase val bodyStr = if (contentType.contains("json")) response.body.string else "[]" + if (bodyStr == "[]") { println(">>> USING EMPTY BODY") } override val body = StringResponseBody(bodyStr, response.charset) } } // 200 for success, 400 if already exists -.check(status.saveAs(SessionVarStatus), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified))) +.check(status.saveAs(SessionVarStatus), bodyString.saveAs(SessionVarBodyString), extractEntityUuid(SessionVarUuid), extractEntityModified(SessionVarModified))) .exec(session => { val saveFailures = Settings.saveInvalidResponse val status = session(SessionVarStatus).as[Int] @@ -239,6 +241,10 @@ object EntityCollectionScenarios { val entityName = session("entityName").as[String] val modified = if (status == 200) session(SessionVarModified).as[Long] else 0 val collectionName = session("collectionName").as[String] +if (status != 200) { + val bodyString = session(SessionVarBodyString).as[String] + println(s" LOAD ERROR - Status: $status\nBody:\n$bodyString") +} Settings.addUuid(uuid, collectionName, entityName, modified, status) session } else {
usergrid git commit: USERGRID-1044: for org/app/collection create, default to testConfig settings
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 038974475 -> fc23b79e9 USERGRID-1044: for org/app/collection create, default to testConfig settings Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/fc23b79e Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/fc23b79e Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/fc23b79e Branch: refs/heads/USERGRID-1044 Commit: fc23b79e9a8a08bc57d25e3e60a9718304f8f1c0 Parents: 0389744 Author: Mike DunkerAuthored: Tue Oct 27 16:39:33 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 16:39:33 2015 -0700 -- stack/loadtests/runOrgAppSetup.sh | 17 ++--- 1 file changed, 10 insertions(+), 7 deletions(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/fc23b79e/stack/loadtests/runOrgAppSetup.sh -- diff --git a/stack/loadtests/runOrgAppSetup.sh b/stack/loadtests/runOrgAppSetup.sh index 19936b7..b26eb37 100755 --- a/stack/loadtests/runOrgAppSetup.sh +++ b/stack/loadtests/runOrgAppSetup.sh @@ -29,6 +29,9 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi #ENTITY_TYPE= #ENTITY_PREFIX= #ENTITY_SEED= #may be overridden on command line +#ORG= #may be overridden on command line +#APP= #may be overridden on command line +#COLLECTION= #may be overridden on command line #RETRY_COUNT= #ENTITY_PROGRESS_COUNT= #CONSTANT_USERS_PER_SEC= @@ -36,14 +39,14 @@ if [[ ! -d "$DIR" ]]; then DIR="$PWD"; fi die() { echo "$@" 1>&2 ; exit 1; } -[ "$#" -ge 2 ] || die "At least 2 arguments required, $# provided. Example is $0 ORG APP [COLLECTION [SANDBOX_COLLECTION (true/false)]]" +[ "$#" -ge 1 ] || die "At least 1 argument required, $# provided. Example is $0 SANDBOX_COLLECTION(true/false) [ORG [APP [COLLECTION]]]" -ORG="$1" -APP="$2" -COLLECTION="gatlingitems" -[ "$#" -ge 3 ] && COLLECTION="$3" -SANDBOX_COLLECTION=true -[ "$#" -ge 4 ] && SANDBOX_COLLECTION="$4" + +SANDBOX_COLLECTION="$1" +# org, app, and collection can come from testConfig.sh +[ "$#" -ge 2 ] && ORG="$2" +[ "$#" -ge 3 ] && APP="$3" +[ "$#" -ge 4 ] && COLLECTION="$4" shift $#
usergrid git commit: USERGRID-1044: add shutdown handler to audit simulations
Repository: usergrid Updated Branches: refs/heads/USERGRID-1044 fc23b79e9 -> 2e70a72b9 USERGRID-1044: add shutdown handler to audit simulations Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/2e70a72b Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/2e70a72b Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/2e70a72b Branch: refs/heads/USERGRID-1044 Commit: 2e70a72b99ac0a48e5f703a1b464fdad3c4d2665 Parents: fc23b79 Author: Mike DunkerAuthored: Tue Oct 27 16:45:02 2015 -0700 Committer: Mike Dunker Committed: Tue Oct 27 16:45:02 2015 -0700 -- .../apache/usergrid/simulations/AuditSimulation.scala| 11 +++ .../usergrid/simulations/ConfigurableSimulation.scala| 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) -- http://git-wip-us.apache.org/repos/asf/usergrid/blob/2e70a72b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala index 47323ea..bdec3dd 100755 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/AuditSimulation.scala @@ -57,6 +57,10 @@ class AuditSimulation extends Simulation { } after { +endHandler + } + + def endHandler: Unit = { Settings.setTestEndTime() if (Settings.captureAuditUuids) { val uuidDesc = Settings.scenarioType match { @@ -69,5 +73,12 @@ class AuditSimulation extends Simulation { Settings.printAuditResults() } + def abortedEarly: Unit = { +println("AUDIT ABORTED") +endHandler + } + + sys addShutdownHook abortedEarly + } http://git-wip-us.apache.org/repos/asf/usergrid/blob/2e70a72b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala -- diff --git a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala index 9d4b05d..a3eb595 100755 --- a/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala +++ b/stack/loadtests/src/main/scala/org/apache/usergrid/simulations/ConfigurableSimulation.scala @@ -99,7 +99,7 @@ class ConfigurableSimulation extends Simulation { Settings.printSettingsSummary(true) } - sys addShutdownHook(endHandler) + sys addShutdownHook endHandler }