You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by ma...@apache.org on 2019/11/01 13:31:16 UTC
[airavata] branch master updated: Create sharing user records for
missing users after waiting for event based replication
This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata.git
The following commit(s) were added to refs/heads/master by this push:
new c9975b2 Create sharing user records for missing users after waiting for event based replication
c9975b2 is described below
commit c9975b29404ef7a9a0fc04000e6e5bd2edfd21a0
Author: Marcus Christie <ma...@iu.edu>
AuthorDate: Fri Nov 1 09:29:09 2019 -0400
Create sharing user records for missing users after waiting for event based replication
---
.../registry/migrator/airavata/AiravataDataMigrator.java | 13 ++++++++++++-
.../registry/messaging/SharingServiceDBEventHandler.java | 4 ----
.../sharing/registry/utils/ThriftDataModelConversion.java | 7 ++++---
3 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
index 0bb498b..2dbb130 100644
--- a/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
+++ b/modules/sharing-registry/sharing-data-migrator/src/main/java/org/apache/airavata/sharing/registry/migrator/airavata/AiravataDataMigrator.java
@@ -53,6 +53,7 @@ import org.apache.airavata.service.security.AiravataSecurityManager;
import org.apache.airavata.service.security.SecurityManagerFactory;
import org.apache.airavata.sharing.registry.models.*;
import org.apache.airavata.sharing.registry.server.SharingRegistryServerHandler;
+import org.apache.airavata.sharing.registry.utils.ThriftDataModelConversion;
import org.apache.thrift.TException;
import java.sql.Connection;
@@ -467,7 +468,10 @@ public class AiravataDataMigrator {
}
private static void checkUsersInSharingRegistryService(SharingRegistryServerHandler sharingRegistryServerHandler, List<UserProfile> missingUsers, String domainId) throws TException{
System.out.println("Waiting for " + missingUsers.size() + " missing users to be propogated to sharing db");
- while (true) {
+ int waitCount = 0;
+ // Wait up to 10 seconds for event based replication to complete, then
+ // add missing users to sharing registry
+ while (waitCount < 10) {
boolean missingInSharing = false;
for (UserProfile users : missingUsers) {
if (!sharingRegistryServerHandler.isUserExists(domainId, users.getAiravataInternalUserId())) {
@@ -482,10 +486,17 @@ public class AiravataDataMigrator {
System.out.print(".");
// wait for 1 second
Thread.sleep(1000);
+ waitCount++;
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
+
+ for (UserProfile users : missingUsers) {
+ if (!sharingRegistryServerHandler.isUserExists(domainId, users.getAiravataInternalUserId())) {
+ sharingRegistryServerHandler.createUser(ThriftDataModelConversion.getUser(users));
+ }
+ }
}
private static boolean addUsersToGroups(SharingRegistryServerHandler sharingRegistryServerHandler, List<UserProfile> missingUsers, GatewayGroups gatewayGroups, String domainId) throws TException, ApplicationSettingsException{
//before adding to groups make sure sharing registry has the user otherwise add it
diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/messaging/SharingServiceDBEventHandler.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/messaging/SharingServiceDBEventHandler.java
index f72a570..ecc6eb8 100644
--- a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/messaging/SharingServiceDBEventHandler.java
+++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/messaging/SharingServiceDBEventHandler.java
@@ -83,10 +83,6 @@ public class SharingServiceDBEventHandler implements MessageHandler {
UserProfile userProfile = new UserProfile();
ThriftUtils.createThriftFromBytes(dBEventMessageContext.getPublisher().getPublisherContext().getEntityDataModel(), userProfile);
- //AIRAVATA-2506: Sharing Service treats airavataInternalUserId as the userId. AiravataAPIServerHandler
- //also treats airavataInternalUserId as the userId when creating entities, entityTypes using the sharing
- //service.
- userProfile.setUserId(userProfile.getAiravataInternalUserId());
User user = ThriftDataModelConversion.getUser(userProfile);
switch (dBEventMessageContext.getPublisher().getPublisherContext().getCrudType()){
diff --git a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/utils/ThriftDataModelConversion.java b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/utils/ThriftDataModelConversion.java
index 7806f26..5093ec9 100644
--- a/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/utils/ThriftDataModelConversion.java
+++ b/modules/sharing-registry/sharing-registry-server/src/main/java/org/apache/airavata/sharing/registry/utils/ThriftDataModelConversion.java
@@ -36,10 +36,11 @@ public class ThriftDataModelConversion {
*/
public static User getUser(UserProfile userProfile){
User user = new User();
- user.setUserId(userProfile.getUserId());
+ user.setUserId(userProfile.getAiravataInternalUserId());
user.setDomainId(userProfile.getGatewayId());
- // TODO: should set username to getUserId, but see SharingServiceDBEventHandler which overrides userId (see AIRAVATA-2788)
- user.setUserName(userProfile.getFirstName() + " " + userProfile.getLastName());
+ user.setUserName(userProfile.getUserId());
+ user.setFirstName(userProfile.getFirstName());
+ user.setLastName(userProfile.getLastName());
user.setEmail(userProfile.getEmails().get(0));
return user;
}