This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new 8f88017  [OPENMEETINGS-2186] token final test
8f88017 is described below

commit 8f880174688ffe99d92d4a87ca5a77111005d7af
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Tue Mar 24 23:18:27 2020 +0700

    [OPENMEETINGS-2186] token final test
---
 .../apache/openmeetings/web/app/ClientManager.java | 25 ++++++++++++----------
 .../src/main/webapp/WEB-INF/classes/hazelcast.xml  |  7 ++++++
 2 files changed, 21 insertions(+), 11 deletions(-)

diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index 26f2442..598ead2 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -358,28 +358,31 @@ public class ClientManager implements IClientManager {
                }
        }
 
+       private String getServerUrl(Map.Entry<String, ServerInfo> e, Room r) {
+               final String curServerId = app.getServerId();
+               String serverId = e.getKey();
+               if (!curServerId.equals(serverId)) {
+                       addRoomToServer(serverId, r);
+                       String uuid = UUID.randomUUID().toString();
+                       tokens().put(uuid, new InstantToken(getUserId(), 
r.getId()));
+                       return e.getValue().getUrl() + "?token=" + uuid;
+               }
+               return null;
+       }
+
        public String getServerUrl(Room r) {
                if (onlineServers.size() == 1) {
                        return null;
                }
-               final String curServerId = app.getServerId();
                Optional<Map.Entry<String, ServerInfo>> existing = 
onlineServers.entrySet().stream()
                                .filter(e -> 
e.getValue().getRooms().contains(r.getId()))
                                .findFirst();
                if (existing.isPresent()) {
-                       String serverId = existing.get().getKey();
-                       return curServerId.equals(serverId) ? null : 
existing.get().getValue().getUrl();
+                       return getServerUrl(existing.get(), r);
                }
                Optional<Map.Entry<String, ServerInfo>> min = 
onlineServers.entrySet().stream()
                                .min((e1, e2) -> e1.getValue().getCapacity() - 
e2.getValue().getCapacity());
-               String serverId = min.get().getKey();
-               if (!curServerId.equals(serverId)) {
-                       addRoomToServer(serverId, r);
-                       String uuid = UUID.randomUUID().toString();
-                       tokens().put(uuid, new InstantToken(getUserId(), 
r.getId()));
-                       return min.get().getValue().getUrl() + "?token=" + uuid;
-               }
-               return null;
+               return getServerUrl(min.get(), r);
        }
 
        Optional<InstantToken> getToken(StringValue uuid) {
diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml 
b/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
index dc847e1..4103181 100644
--- a/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
+++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/hazelcast.xml
@@ -65,6 +65,13 @@
                        <cache-local-entries>true</cache-local-entries>
                </near-cache>
        </map>
+       <map name="INSTANT_TOKENS_KEY">
+               <near-cache>
+                       <eviction eviction-policy="NONE"/>
+                       <in-memory-format>OBJECT</in-memory-format>
+                       <cache-local-entries>true</cache-local-entries>
+               </near-cache>
+       </map>
        <instance-name>server-1</instance-name><!-- MAKE SURE THIS ONE IS 
UNIQUE -->
        <member-attributes>
                <attribute 
name="server.url">https://127.0.0.1:5443/openmeetings</attribute><!-- MAKE SURE 
THIS PUBLIC SERVER ADDRESS, USE IP with care: certificate may be not valid for 
IP -->

Reply via email to