IP Library Granted Patent US 12,210,430
Granted Patent B2
US 12,210,430 · App. 18/330,966 · Granted Jan 28, 2025

Active-active environment control

Inventor: Yoav Landman (Netanya, IL)
Assignee: JFrog Ltd.
G06F11/2082G06F8/60G06F11/2076G06F21/64H04L9/0825
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,210,430
App. No.
18/330,966
Filed
Jun 7, 2023
Granted
Jan 28, 2025
Kind
B2
Art Unit
2169
USPC
711/162
Abstract

The present disclosure provides a method, system, and device for security object synchronization at multiple nodes of an active-active environment. To illustrate, a source node may generate a corresponding security object sync request for each of multiple target nodes. The source node may send the security object sync request to the target nodes via a source queue and, for each target node, a corresponding distribution queue. A distribution queue may be closed based on an acknowledgement received from a corresponding target node, after a time period, or after a number of transmission attempts. A synchronization log may be maintained to indicate which security object sync requests have been delivered to which target nodes. In some implementations, the source node and the target nodes are part of an active-active environment that may be synchronized in time so the nodes resolve conflicts between received security object updates initiated from two different nodes.

Claims (59)

1. A method for security object synchronization in an active-active environment, the method comprising:

initializing, at a source node, a distribution structure comprising a source queue and one or more distribution queues, the one or more distribution queues including, for each of one or more target nodes identified to receive a security object sync request from the source node to synchronize an instance of an application, a corresponding distribution queue;

for each of the one or more target nodes, transmitting, via the source queue and the corresponding distribution queue, a corresponding security object sync request;

receiving, at the source node, at least one acknowledgement of receipt of security object sync request from at least one target node of the one or more target nodes; and

updating, at the source node, a synchronization log to record the at least one acknowledgment.

2. The method of claim 1 , further comprising:

receiving, at the source node, a user instruction that contains an identification of the one or more target nodes.

3. The method of claim 1 , where receiving the at least one acknowledgement comprises receiving a first acknowledgement from a first target node of the one or more target nodes, and where updating the synchronization log comprises updating the synchronization log to record acknowledgement of receipt of a first security object sync request from the first target node.

4. The method of claim 3 , where receiving the at least one acknowledgement comprises receiving a second acknowledgement from a second target node of the one or more target nodes, and where updating the synchronization log comprises updating the synchronization log to record acknowledgement of receipt of a second security object sync request from the second target node.

5. The method of claim 1 , where the security object sync request comprises an add group request, a delete group request, a modify group request, an add user request, a delete user request, a modify user request, an add key request, a remove key request, an add permissions request, a remove permissions request, a modify permissions request, or any combination thereof.

6. The method of claim 1 , further comprising:

identifying, at the source node, a most recent synchronization update of a first target node of the one or more target nodes;

determining, at the source node, if at least one synchronization update was requested between the most recent synchronization update and receipt of an instruction to synchronize the instance of the application; and

generating, at the source node, a first sync request for the first target node.

7. The method of claim 6 , where the first sync request includes update data corresponding to the instruction and to the at least one synchronization update.

8. The method of claim 6 , where identifying the most recent synchronization update of the first target node comprises:

determining, at the source node, a first time value corresponding to the most recent synchronization update;

determining, at the source node, a second time value corresponding to receipt of the instruction; and

comparing the first time value and the second time value, where the source node and each of the one or more target nodes are synchronized in time.

9. The method of claim 6 , further comprising:

prior to sending the first sync request for the first target node, encoding the first sync request with a certificate of the source node, where the certificate of the source node comprises a token or a private key of the source node.

10. The method of claim 1 , further comprising:

receiving an acknowledgement from a first target node of the one or more target nodes via a first distribution queue of the one or more distribution queues responsive to transmitting a first security object sync request;

closing the first distribution queue based on receipt of the acknowledgement; and

closing the source queue based on a determination that no distribution queue of the one or more distribution queues remains active.

11. The method of claim 1 , where a sync request that corresponds to a first target node of the one or more target nodes causes the first target node to initiate a target queue.

12. A system for security object synchronization in an active-active environment, the system, the system comprising:

at least one memory storing instructions; and

one or more processors of a source node, the one or more processors coupled to the at least one memory and configured to execute the instructions to cause the one or more processors to:

initialize a distribution structure comprising a source queue and one or more distribution queues, the one or more distribution queues including, for each of one or more target nodes identified to receive a security object sync request from the source node to synchronize an instance of an application, a corresponding distribution queue;

for each of the one or more target nodes, transmit, via the source queue and the corresponding distribution queue, a corresponding security object sync request;

receive at least one acknowledgement of receipt of security object sync request from at least one target node of the one or more target nodes; and

update a synchronization log to record the at least one acknowledgment.

13. The system of claim 12 , where the one or more processors are further configured, responsive to a determination that an acknowledgement of receipt of a first security object sync request has not been received from a first target node of the one or more target nodes, to:

determine an amount of time that has elapsed since the first security object sync request was sent;

compare the amount of time to a threshold; and

in response to the amount of time being greater than or equal to the threshold, resend the first security object sync request to the first target node.

14. The system of claim 12 , where the one or more processors are further configured, responsive to a determination that an acknowledgement of receipt of a first security object sync request has not been received from a first target node of the one or more target nodes, to:

receive an additional request to synchronize the first target node after sending the first security object sync request to the first target node;

update the first security object sync request based on the additional request to generate an updated first security object sync request; and

send the updated first security object sync request to the first target node.

15. The system of claim 12 , where the one or more processors are further configured, responsive to a determination that an acknowledgement of receipt of a first security object sync request has not been received from a first target node of the one or more target nodes, to:

determine a number of times that the first security object sync request has been sent without acknowledgement; and

in response to the number of times being greater than or equal to a threshold, determine that the first target node is inactive.

16. The system of claim 12 , where:

the active-active environment comprises multiple geographic regions;

the source node is included in a first geographic region of the multiple geographic regions; and

a first target node of the one or more target nodes is included in a second geographic region that is distinct from the first geographic region.

17. A non-transitory computer-readable storage medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations for security object synchronization in an active-active environment, the operations comprising:

initializing, at a source node, a distribution structure comprising a source queue and one or more distribution queues, the one or more distribution queues including, for each of one or more target nodes identified to receive a security object sync request from the source node to synchronize an instance of an application, a corresponding distribution queue;

for each of the one or more target nodes, transmitting, via the source queue and the corresponding distribution queue, a corresponding security object sync request;

receiving, at the source node, at least one acknowledgement of receipt of security object sync request from at least one target node of the one or more target nodes; and

updating, at the source node, a synchronization log to record the at least one acknowledgment.

18. The non-transitory computer-readable storage medium of claim 17 , where the distribution structure comprises a logical hierarchy of virtual queues.

19. The non-transitory computer-readable storage medium of claim 17 , where the operations further comprise:

maintaining a list of the one or more target nodes, each of the one or more target nodes corresponding to a unique identifier; and

adding a target node to the list.

20. The non-transitory computer-readable storage medium of claim 19 , where the operations further comprise:

creating and storing one or more application program interfaces (APIs), the one or more APIs corresponding to a path to the target node, an operation to remove the target node from the list, an operation to perform a synchronization operation with the target node, or a combination thereof.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 25, 2024
From: LANDMAN, YOAV
To: JFROG LTD.
Reel/Frame 068078/0908 →
Continuity (3)
Continuation 17458275 · Aug 26, 2021
Continuation 16399915 · Apr 30, 2019
Related Publication 20230315594A1 · Oct 5, 2023
References Cited (173)
US 5671282A · Wolff et al. · 1997 [cited by applicant]
US 5915238A · Tjaden · 1999 [cited by applicant]
US 5931946A · Terada et al. · 1999 [cited by applicant]
US 6604236B1 · Draper et al. · 2003 [cited by applicant]
US 6802061B1 · Parthasarathy et al. · 2004 [cited by applicant]
US 7007042B2 · Lubbers et al. · 2006 [cited by applicant]
US 7403901B1 · Carley et al. · 2008 [cited by applicant]
US 7685148B2 · Engquist et al. · 2010 [cited by applicant]
US 7814146B2 · Chavez et al. · 2010 [cited by applicant]
US 7987368B2 · Zhu et al. · 2011 [cited by applicant]
US 8131838B2 · Bornhoevd et al. · 2012 [cited by applicant]
US 8196186B2 · Mityagin et al. · 2012 [cited by applicant]
US 8239446B2 · Navar et al. · 2012 [cited by applicant]
US 8413198B2 · Connor et al. · 2013 [cited by applicant]
US 8688803B2 · Manion et al. · 2014 [cited by applicant]
US 9280339B1 · Prunicki et al. · 2016 [cited by applicant]
US 9607043B2 · Nguyen et al. · 2017 [cited by applicant]
US 9659155B2 · Kosovan · 2017 [cited by applicant]
US 9805056B2 · Parkison et al. · 2017 [cited by applicant]
US 9819665B1 · Machani · 2017 [cited by applicant]
US 9842062B2 · Ford et al. · 2017 [cited by applicant]
US 9959394B2 · Vlot et al. · 2018 [cited by applicant]
US 9971594B2 · Fox et al. · 2018 [cited by applicant]
US 10037204B2 · Patton et al. · 2018 [cited by applicant]
US 10043026B1 · Salour et al. · 2018 [cited by applicant]
US 10091215B1 · Word · 2018 [cited by applicant]
US 10146788B1 · Weatherall et al. · 2018 [cited by applicant]
US 10216757B1 · Armangau et al. · 2019 [cited by applicant]
US 10339299B1 · Magnuson et al. · 2019 [cited by applicant]
US 10387369B1 · Davenport et al. · 2019 [cited by applicant]
US 10387570B2 · VanBlon et al. · 2019 [cited by applicant]
US 10409838B1 · George et al. · 2019 [cited by applicant]
US 10440106B2 · Murstein · 2019 [cited by examiner]
US 10528262B1 · Shmuylovich et al. · 2020 [cited by applicant]
US 10540173B2 · Patton et al. · 2020 [cited by applicant]
US 10552138B2 · Smith et al. · 2020 [cited by applicant]
US 10701143B1 · Jha et al. · 2020 [cited by applicant]
US 10754952B2 · Muller et al. · 2020 [cited by applicant]
US 10785334B2 · Kristiansson et al. · 2020 [cited by applicant]
US 10809932B1 · Armangau et al. · 2020 [cited by applicant]
US 10812975B1 · Easwar Prasad et al. · 2020 [cited by applicant]
US 10880150B1 · Farber et al. · 2020 [cited by applicant]
US 10880407B2 · Reynolds et al. · 2020 [cited by applicant]
US 11106554B2 · Landman · 2021 [cited by examiner]
US 11176154B1 · Dasgupta et al. · 2021 [cited by applicant]
US 11284258B1 · Wei et al. · 2022 [cited by applicant]
US 11503076B2 · White · 2022 [cited by examiner]
US 11921595B2 · Sekar et al. · 2024 [cited by applicant]
US 20020062439A1 · Cotugno et al. · 2002 [cited by applicant]
US 20020198920A1 · Resnick et al. · 2002 [cited by applicant]
US 20030191955A1 · Wagner et al. · 2003 [cited by applicant]
US 20030220880A1 · Lao et al. · 2003 [cited by applicant]
US 20040030731A1 · Iftode et al. · 2004 [cited by applicant]
US 20040054764A1 · Aderton et al. · 2004 [cited by applicant]
US 20040250115A1 · Gemmel et al. · 2004 [cited by applicant]
US 20040267807A1 · Barabas et al. · 2004 [cited by applicant]
US 20050055386A1 · Tosey · 2005 [cited by applicant]
US 20050071385A1 · Rao · 2005 [cited by applicant]
US 20060107286A1 · Connor et al. · 2006 [cited by applicant]
US 20060195816A1 · Grandcolas et al. · 2006 [cited by applicant]
US 20070220575A1 · Cooper et al. · 2007 [cited by applicant]
US 20070294686A1 · Oh · 2007 [cited by applicant]
US 20090013317A1 · Abfalter et al. · 2009 [cited by applicant]
US 20090119655A1 · Quilty · 2009 [cited by applicant]
US 20090144340A1 · Ferguson et al. · 2009 [cited by applicant]
US 20090210697A1 · Chen et al. · 2009 [cited by applicant]
US 20090271412A1 · Lacapra et al. · 2009 [cited by applicant]
US 20090290715A1 · Mityagin et al. · 2009 [cited by applicant]
US 20090313353A1 · Lou · 2009 [cited by applicant]
US 20100185614A1 · O'Brien et al. · 2010 [cited by applicant]
US 20100223472A1 · Alvarsson · 2010 [cited by applicant]
US 20100287363A1 · Thorsen · 2010 [cited by applicant]
US 20110010258A1 · Chavez et al. · 2011 [cited by applicant]
US 20110071841A1 · Fomenko et al. · 2011 [cited by applicant]
US 20110072075A1 · Gautier · 2011 [cited by applicant]
US 20110107419A1 · Vidal et al. · 2011 [cited by applicant]
US 20110113012A1 · Gruhl et al. · 2011 [cited by applicant]
US 20120072763A1 · Lu et al. · 2012 [cited by applicant]
US 20120131566A1 · Morgan et al. · 2012 [cited by applicant]
US 20120151051A1 · Zhang et al. · 2012 [cited by applicant]
US 20120159469A1 · Laor · 2012 [cited by applicant]
US 20120210312A1 · Ma et al. · 2012 [cited by applicant]
US 20120233134A1 · Barton et al. · 2012 [cited by applicant]
US 20120240096A1 · Sass · 2012 [cited by applicant]
US 20120259920A1 · Mathieu et al. · 2012 [cited by applicant]
US 20130081100A1 · Sreehari et al. · 2013 [cited by applicant]
US 20130124807A1 · Nielsen et al. · 2013 [cited by applicant]
US 20130132946A1 · Ma · 2013 [cited by applicant]
US 20130268927A1 · Cochran · 2013 [cited by applicant]
US 20130326494A1 · Nunez · 2013 [cited by applicant]
US 20140074882A1 · Vyvyan · 2014 [cited by applicant]
US 20140173024A1 · Burba et al. · 2014 [cited by applicant]
US 20140245376A1 · Hibbert et al. · 2014 [cited by applicant]
US 20140280457A1 · Anton et al. · 2014 [cited by applicant]
US 20150099510A1 · Shah et al. · 2015 [cited by applicant]
US 20150172352A1 · Gopalakrishnan et al. · 2015 [cited by applicant]
US 20150268881A1 · Nielsen et al. · 2015 [cited by applicant]
US 20150301823A1 · Hatakeyama · 2015 [cited by applicant]
US 20150301824A1 · Patton et al. · 2015 [cited by applicant]
US 20150302037A1 · Jackson et al. · 2015 [cited by applicant]
US 20150341178A1 · Tanaka et al. · 2015 [cited by applicant]
US 20150341325A1 · Al Jabri · 2015 [cited by applicant]
US 20150350004A1 · Sekar et al. · 2015 [cited by applicant]
US 20150350186A1 · Chan et al. · 2015 [cited by applicant]
US 20150370827A1 · Parkison et al. · 2015 [cited by applicant]
US 20160006837A1 · Reynolds et al. · 2016 [cited by applicant]
US 20160117235A1 · Mishra et al. · 2016 [cited by applicant]
US 20160124665A1 · Jain et al. · 2016 [cited by applicant]
US 20160179867A1 · Li et al. · 2016 [cited by applicant]
US 20160234237A1 · Thakar et al. · 2016 [cited by applicant]
US 20160267101A1 · Clissold et al. · 2016 [cited by applicant]
US 20160299835A1 · Jain et al. · 2016 [cited by applicant]
US 20160373440A1 · Mather et al. · 2016 [cited by applicant]
US 20170003951A1 · Newell et al. · 2017 [cited by applicant]
US 20170034023A1 · Nickolov et al. · 2017 [cited by applicant]
US 20170060546A1 · Prasad et al. · 2017 [cited by applicant]
US 20170147338A1 · Jackson et al. · 2017 [cited by applicant]
US 20170177445A1 · Lai et al. · 2017 [cited by applicant]
US 20170262657A1 · Salmon-Legagneur et al. · 2017 [cited by applicant]
US 20170264588A1 · Hunt et al. · 2017 [cited by applicant]
US 20170300309A1 · Berger et al. · 2017 [cited by applicant]
US 20170353933A1 · Xhafa et al. · 2017 [cited by applicant]
US 20170357496A1 · Smith et al. · 2017 [cited by applicant]
US 20170371499A1 · Checkley et al. · 2017 [cited by applicant]
US 20180240546A1 · Pfeiffer · 2018 [cited by applicant]
US 20180260212A1 · Wisnovsky · 2018 [cited by applicant]
US 20180373517A1 · Hu · 2018 [cited by applicant]
US 20190014161A1 · Doar et al. · 2019 [cited by applicant]
US 20190050255A1 · Chagam Reddy · 2019 [cited by applicant]
US 20190050576A1 · Boulton · 2019 [cited by applicant]
US 20190080080A1 · Ogura et al. · 2019 [cited by applicant]
US 20190130114A1 · Smith et al. · 2019 [cited by applicant]
US 20190138287A1 · De Capoa et al. · 2019 [cited by applicant]
US 20190141163A1 · Markham et al. · 2019 [cited by applicant]
US 20190155598A1 · Bainville et al. · 2019 [cited by applicant]
US 20190187980A1 · Patton et al. · 2019 [cited by applicant]
US 20190205121A1 · Ericson · 2019 [cited by applicant]
US 20190303623A1 · Reddy et al. · 2019 [cited by applicant]
US 20190306173A1 · Reddy et al. · 2019 [cited by applicant]
US 20190332367A1 · Navarrete Michelini et al. · 2019 [cited by applicant]
US 20200012441A1 · Chheda et al. · 2020 [cited by applicant]
US 20200034132A1 · U et al. · 2020 [cited by applicant]
US 20200076618A1 · Driever et al. · 2020 [cited by applicant]
US 20200076807A1 · Driever et al. · 2020 [cited by applicant]
US 20200084202A1 · Smith et al. · 2020 [cited by applicant]
US 20200162543A1 · Mosko et al. · 2020 [cited by applicant]
US 20200177397A1 · Harrington · 2020 [cited by applicant]
US 20200186505A1 · Amar et al. · 2020 [cited by applicant]
US 20200213144A1 · Maloy · 2020 [cited by applicant]
US 20200244297A1 · Zalewski et al. · 2020 [cited by applicant]
US 20200252207A1 · Hanel et al. · 2020 [cited by applicant]
US 20200293382A1 · Ivancich et al. · 2020 [cited by applicant]
US 20200351089A1 · Wentz · 2020 [cited by applicant]
US 20200372183A1 · Rangaiah et al. · 2020 [cited by applicant]
US 20200409986A1 · Soroushian et al. · 2020 [cited by applicant]
US 20200412691A1 · Shribman et al. · 2020 [cited by applicant]
US 20210026611A1 · Bequet et al. · 2021 [cited by applicant]
US 20210081367A1 · Madisetti et al. · 2021 [cited by applicant]
US 20210111875A1 · Le · 2021 [cited by applicant]
US 20210200834A1 · Adams et al. · 2021 [cited by applicant]
US 20210218800A1 · Landman · 2021 [cited by applicant]
US 20210234749A1 · Vazirani et al. · 2021 [cited by applicant]
US 20210263911A1 · Gamiz et al. · 2021 [cited by applicant]
US 20210304142A1 · Bar-on et al. · 2021 [cited by applicant]
US 20220300531A1 · Boshev et al. · 2022 [cited by applicant]
US 20220326944A1 · Khan et al. · 2022 [cited by applicant]
US 20230145461A1 · Templeton et al. · 2023 [cited by applicant]
US 20230289368A1 · Boshev et al. · 2023 [cited by applicant]
WO WO2012153173A2 · 2012 [cited by applicant]
Yoshida et al. “Understanding the Origins of Weak Cryptographic Algorithms Used for Signing Android Apps,” 2018 42 [cited by applicant]
H. B. Hadj Abdallah and W. Louati, “Ftree-CDN: Hybrid CDN and P2P Architecture for Efficient Content Distribution,” 2019 27th Euromicro International Conference on Parallel, Distributed and Network-Based Processing (PDP… [cited by applicant]
M. Srivatsa, B. Gedik and Ling Liu, “Scaling Unstructured Peer-to-Peer Networks with Multi- Tier Capacity-Aware Overlay Topologies,” Proceedings. Tenth International Conference on Parallel and Distributed Systems, 2004.… [cited by applicant]
F. Turkmen, P. Mazzoleni, B. Crispo and E. Bertino, “P-CDN: Extending Access Control Capabilities of P2P Systems to Provide CDN Services,” 2008 IEEE Symposium on Computers and Communications, Marrakech, Morocco, 2008, p… [cited by applicant]