IP Library Granted Patent US 11,194,591
Granted Patent B2
US 11,194,591 · App. 16/255,752 · Granted Dec 7, 2021

Scalable software resource loader

Inventors: Brian Toal (San Francisco, CA); Rahul Shinde (San Francisco, CA)
Assignee: SALESFORCE.COM, INC.
G06F9/445
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 11,194,591
App. No.
16/255,752
Granted
Dec 7, 2021
Kind
B2
Abstract

Embodiments of the present disclosure relate to loading software resources for execution by a software application. Other embodiments may be described and/or claimed.

Claims (29)

1. A system comprising:

a processor; and

memory coupled to the processor and storing instructions that, when executed by the processor, cause the system to perform operations comprising:

determining, in a first process thread, identification information for a set of software resources in a plurality of software modules;

generating, in a second process thread running at least partially concurrent to the first process thread, a cache containing the identification information for the set of software resources, wherein the second process thread waits to add software resources from a first module in the plurality of software modules to the cache until the identification information for all of the software resources in the first software module is determined in the first process thread, wherein a notification is sent from the first process thread to the second process thread subsequent to the determining of the identification information for the set of software resources in the plurality of software modules, and the system determines, in the second thread, an order of the plurality of software modules in response to receiving the notification;

identifying, in the first process thread, one or more of the set of software resources that are associated with a software application and that are present in the cache; and

loading the one or more identified software resources.

2. The system of claim 1 , wherein the memory further stores instructions for causing the system to perform operations comprising: creating the software module.

3. The system of claim 1 , wherein a classpath identifies the plurality of software modules associated with the software application.

4. The system of claim 1 , wherein the order of the plurality of software modules is determined based on a classpath identifying the plurality of software modules associated with the software application.

5. The system of claim 1 , wherein the memory further stores instructions for causing the system to perform operations comprising:

identifying a software resource associated with the software application that is not present in the cache; and

performing an iterative search of the software module for the software resource associated with the software application that is not present in the cache.

6. A tangible, non-transitory computer-readable medium storing instructions that, when executed by a computer system, cause the computer system to perform operations comprising:

determining, in a first process thread, identification information for a set of software resources in a plurality of software modules;

generating, in a second process thread running at least partially concurrent to the first process thread, a cache containing the identification information for the set of software resources, wherein the second process thread waits to add software resources from a first module in the plurality of software modules to the cache until the identification information for all of the software resources in the first software module is determined in the first process thread, wherein a notification is sent from the first process thread to the second process thread subsequent to the determining of the identification information for the set of software resources in the plurality of software modules, and the computer system determines, in the second thread, an order of the plurality of software modules in response to receiving the notification;

identifying, in the first process thread, one or more of the set of software resources that are associated with a software application and that are present in the cache; and

loading the one or more identified software resources.

7. The tangible, non-transitory computer-readable medium of claim 6 , wherein the medium further stores instructions for causing the computer system to perform operations comprising: creating the software module.

8. The tangible, non-transitory computer-readable medium of claim 6 , wherein a classpath identifies the plurality of software modules associated with the software application.

9. The tangible, non-transitory computer-readable medium of claim 6 , wherein the order of the plurality of software modules is determined based on a classpath identifying the plurality of software modules associated with the software application.

10. The tangible, non-transitory computer-readable medium of claim 6 , wherein the medium further stores instructions for causing the computer system to perform operations comprising:

identifying a software resource associated with the software application that is not present in the cache; and

performing an iterative search of the software module for the software resource associated with the software application that is not present in the cache.

11. A method comprising:

determining, by a computer system in a first process thread, identification information for a set of software resources in a plurality of software modules;

generating, by the computer system in a second process thread running at least partially concurrent to the first process thread, a cache containing the identification information for the set of software resources, wherein the second process thread waits to add software resources from a first module in the plurality of software modules to the cache until the identification information for all of the software resources in the first software module is determined in the first process thread, wherein a notification is sent from the first process thread to the second process thread subsequent to the determining of the identification information for the set of software resources in the plurality of software modules, and the computer system determines, in the second thread, an order of the plurality of software modules in response to receiving the notification;

identifying, by the computer system in the first process thread, one or more of the set of software resources that are associated with a software application and that are present in the cache; and

loading, by the computer system, the one or more identified software resources.

Assignments (2)
CHANGE OF NAME Recorded Oct 30, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065394/0169 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 24, 2019
From: TOAL, BRIAN; SHINDE, RAHUL
To: SALESFORCE.COM, INC.
Reel/Frame 048122/0605 →
Continuity (1)
Related Publication 20200233675A1 · Jul 23, 2020