Merge branch 'hotfix-20160819'
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/d915f557 Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/d915f557 Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/d915f557 Branch: refs/heads/asf-site Commit: d915f557b46a5ba7d9d3d711f44a6a8ed89e3847 Parents: efb5bfb 72dcd48 Author: Michael Russo <[email protected]> Authored: Thu Sep 8 09:30:59 2016 -0700 Committer: Michael Russo <[email protected]> Committed: Thu Sep 8 09:30:59 2016 -0700 ---------------------------------------------------------------------- .../usergrid/rest/exceptions/AuthErrorInfo.java | 1 + .../shiro/filters/BasicAuthSecurityFilter.java | 22 ++- .../management/AccountCreationProps.java | 8 + .../cassandra/OrganizationConfigPropsImpl.java | 38 +++- .../usergrid/services/users/UsersService.java | 15 +- .../usergrid/tools/UniqueValueManager.java | 183 +++++++------------ 6 files changed, 142 insertions(+), 125 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/d915f557/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueValueManager.java ---------------------------------------------------------------------- diff --cc stack/tools/src/main/java/org/apache/usergrid/tools/UniqueValueManager.java index 6209784,14991ef..755ad3f --- a/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueValueManager.java +++ b/stack/tools/src/main/java/org/apache/usergrid/tools/UniqueValueManager.java @@@ -23,11 -23,16 +23,13 @@@ import java.io.FileReader import java.util.*; import java.util.concurrent.atomic.AtomicInteger; -import com.google.common.base.*; -import com.netflix.astyanax.connectionpool.exceptions.ConnectionException; -import com.netflix.astyanax.model.Column; -import com.netflix.astyanax.model.ConsistencyLevel; -import com.netflix.astyanax.util.RangeBuilder; -import org.apache.usergrid.persistence.Entity; +import com.datastax.driver.core.BatchStatement; +import com.datastax.driver.core.ConsistencyLevel; +import com.datastax.driver.core.Session; import org.apache.usergrid.persistence.EntityManager; + import org.apache.usergrid.persistence.collection.MvccEntity; import org.apache.usergrid.persistence.collection.serialization.MvccEntitySerializationStrategy; + import org.apache.usergrid.persistence.collection.serialization.UniqueValue; import org.apache.usergrid.persistence.collection.serialization.UniqueValueSerializationStrategy; import org.apache.usergrid.persistence.collection.serialization.UniqueValueSet; import org.apache.usergrid.persistence.collection.serialization.impl.*; @@@ -158,9 -189,42 +186,42 @@@ public class UniqueValueManager extend String fieldValue = valuesArray[3]; UniqueValueSet uniqueValueSet = uniqueValueSerializationStrategy.load( - new ApplicationScopeImpl(new SimpleId(appUuid, "application")), - ConsistencyLevel.valueOf(System.getProperty("usergrid.read.cl", "LOCAL_QUORUM")), entityType, - Collections.singletonList(new StringField(fieldType, fieldValue)), false); + new ApplicationScopeImpl(new SimpleId(appUuid, "application")), + ConsistencyLevel.valueOf(System.getProperty("usergrid.read.cl", "CL_LOCAL_QUORUM")), entityType, + Collections.singletonList(new StringField(fieldType, fieldValue)), useSerializationRepair); + + if( updateOp) { + + if(valuesArray.length!=5){ + throw new RuntimeException("Missing param {newEntityUUID}"); + } + String updateUUID = valuesArray[4]; + + ApplicationScope applicationScope = new ApplicationScopeImpl(new SimpleId(appUuid, "application")); + com.google.common.base.Optional<MvccEntity> entity = + mvccEntitySerializationStrategy.load(applicationScope, new SimpleId(UUID.fromString(updateUUID), entityType)); + + if( !entity.isPresent() + || !entity.get().getEntity().isPresent() ){ + throw new RuntimeException("Unable to update unique value index because supplied UUID "+updateUUID+" does not exist"); + } + + logger.info("Delete unique value: {}", uniqueValueSet.getValue(fieldType)); - uniqueValueSerializationStrategy.delete(applicationScope, uniqueValueSet.getValue(fieldType)).execute(); ++ session.execute(uniqueValueSerializationStrategy.deleteCQL(applicationScope, uniqueValueSet.getValue(fieldType))); + + UniqueValue newUniqueValue = + new UniqueValueImpl(new StringField(fieldType, fieldValue), entity.get().getId(), entity.get().getVersion()); + logger.info("Writing new unique value: {}", newUniqueValue); - uniqueValueSerializationStrategy.write(applicationScope, newUniqueValue).execute(); ++ session.execute(uniqueValueSerializationStrategy.writeCQL(applicationScope, newUniqueValue, -1)); + + logger.info("Re-loading unique value set for field"); + + } + + uniqueValueSet = uniqueValueSerializationStrategy.load( + new ApplicationScopeImpl(new SimpleId(appUuid, "application")), + ConsistencyLevel.valueOf(System.getProperty("usergrid.read.cl", "CL_LOCAL_QUORUM")), entityType, + Collections.singletonList(new StringField(fieldType, fieldValue)), useSerializationRepair); StringBuilder stringBuilder = new StringBuilder();
