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;
     }