IP Library Granted Patent US 9,977,727
Granted Patent B2
US 9,977,727 · App. 15/263,237 · Granted May 22, 2018

Methods and systems for internally debugging code in an on-demand service environment

Inventor: Steven Tamm (San Francisco, CA)
Assignee: salesforce.com, inc.
G06F11/3644G06F8/70G06F11/3656H04L67/10
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 9,977,727
App. No.
15/263,237
Granted
May 22, 2018
Kind
B2
Abstract

A remote debug session for a server group is provided. A server group including multiple servers that perform workload sharing receives a request to debug code executed at the server group. The code is executed on behalf of a client of a database associated with the server group. At least one of the servers of the group initiates a debugging session and establishes a communication connection with the client. The server group maintains the connection open with the client for the duration of the debugging session. Subsequent requests related to the debug session can be handled in a number of ways by the server group, and all communication to the client about processing the requests is through the connection.

Claims (52)

1. A system comprising:

a server group including multiple hardware servers each having at least a memory device and one or more hardware processing devices coupled with the at least one memory device that share tasks among the multiple hardware servers, the server group to

receive a debugging session request from a client device over a network connection, the debugging session request to debug code executed by the server group and not locally at the client device;

establish a connection to the client device to initiate a debugging session between the server group and an integrated development environment (IDE) of the client device in response to the debugging session request;

maintain open the connection with the client device for a duration of the debugging session;

maintain state for the debugging session with a resource shared among the server for subsequent service requests of the debugging session at the server group;

receive service requests with the first server and distribute the service requests among the server group for processing, wherein each server that processes a request is to communicate via the connection to the client device about processing on the service requests and wherein breakpoint operations are modified to be registered in a same state as the connection.

2. The system of claim 1 , wherein the server group further comprises a multitenant database shared by a plurality of separate and distinct customer organizations,

wherein the multitenant database stores data for multiple client organizations each identified by a tenant identifier (ID) and one or more users are associated with the tenant ID,

wherein the one or more users of each client organization accesses data identified by the tenant ID associated with the respective client organization, and

wherein the multitenant database is hosted by an entity separate from the client organization.

3. The system of claim 1 , wherein the server group is to establish the connection by initiating a communication thread for communication from a first server to the client device, the communication thread to be maintained for the duration of the debugging session.

4. The system of claim 1 , wherein the server group is to maintain state for the debugging session by storing state for the debugging session in a shared memory cache shared among the servers of the server group.

5. The system of claim 1 , wherein the server group is to further

set a breakpoint that interrupts only execution of a thread of a server handling execution of the debugging session, and does not interrupt other execution threads in the server group;

wherein the breakpoint is set with an associated timeout, and execution of the thread is resumed and ended if activity on the thread ceases for the length of the timeout.

6. The system of claim 1 , wherein the server group is to maintain state for the debugging session by creating a thread associated with the debugging session and a stack associated with the thread, wherein the servers of the server group have access to the thread and the stack.

7. A method comprising:

receiving a debugging session request at a server group from a client device over a network connection, the server group appearing to the client device as a single server entity associated with a database, the server group including multiple servers that share tasks among the multiple servers based on workload sharing, the debugging session request to debug code executed by the server group and not locally at the client device;

establishing a connection to the client device to initiate a debugging session between the server group and an integrated development environment (IDE) of the client device in response to the debugging session request, the server group to maintain open the connection with the client device for a duration of the debugging session;

maintaining state for the debugging session for subsequent service requests of the debugging session at the server group with a resource shared among the server group;

distributing the subsequent service requests among the server group for processing, wherein each server that processes a request is to communicate via the connection to the client device about processing on the service requests and wherein breakpoint operations are modified to be registered in a same state as the connection.

8. The method of claim 7 , wherein the code executed by the server group comprises an application on data stored at the server group for the client device.

9. The method of claim 7 , wherein the database comprises a multitenant database and the server group provides processing services for access to the multitenant database,

wherein the multitenant database stores data for multiple client organizations each identified by a tenant identifier (ID) and one or more users are associated with the tenant ID, the client device being one of the users associated with the tenant ID,

wherein the one or more users of each client organization accesses data identified by the tenant ID associated with the respective client organization, and

wherein the multitenant database is hosted by an entity separate from the client organization.

10. The method of claim 7 , wherein establishing the connection further comprises:

initiating a communication thread for communication from the server group to the client device, the communication thread to be maintained for the duration of the debugging session.

11. The method of claim 7 , wherein registering the debugging session for the client device further comprises:

generating an identifier (ID) for the debugging session; and

associating the ID with a first server, wherein a second server of the server group directs communication related to the debugging session to the first server based on the associated ID.

12. The method of claim 7 , wherein maintaining state for the debugging session further comprises:

storing state for the debugging session in a shared memory cache shared among the servers of the server group.

13. The method of claim 7 , wherein maintaining state for the debugging session further comprises:

initiating a debugging thread with an associated stack for the debugging session, the debugging thread to be maintained for the duration of the debugging session.

14. The method of claim 7 , further comprising:

starting a new processing thread for each subsequent service request, and closing each processing thread upon servicing its corresponding request.

15. The method of claim 7 , further comprising:

setting a breakpoint that interrupts only execution of a thread of a server handling execution of the debugging session, and does not interrupt other execution threads in the server group;

wherein setting the breakpoint includes setting an associated timeout, and execution of the thread is resumed and ended if activity on the thread ceases for the length of the timeout.

16. The method of claim 7 , wherein maintaining state comprises storing state information in the associated stack.

17. A non-transitory computer readable storage medium having content stored thereon, which when executed, cause a machine to perform operations including:

receiving a debugging session request at a server group from a client device over a network connection, the server group appearing to the client device as a single server entity associated with a database, the server group including multiple servers that share tasks among the multiple servers based on workload sharing, the debugging session request to debug code executed by the server group and not locally at the client device;

establishing a connection to the client device to initiate a debugging session between the server group and an integrated development environment (IDE) of the client device in response to the debugging session request, the server group to maintain open the connection with the client device for a duration of the debugging session;

maintaining state for the debugging session for subsequent service requests of the debugging session at the server group with a resource shared among the server group;

distributing the subsequent service requests among the server group for processing, wherein each server that processes a request is to communicate via the connection to the client device about processing on the service requests and wherein breakpoint operations are modified to be registered in a same state as the connection.

18. The non-transitory computer readable storage medium of claim 17 , wherein maintaining state for the debugging session further comprises:

storing state for the debugging session in a shared memory cache shared among the servers of the server group.

19. The non-transitory computer readable storage medium of claim 17 , wherein maintaining state for the debugging session further comprises:

initiating a debugging thread with an associated stack for the debugging session, the debugging thread to be maintained for the duration of the debugging session; and

storing the state information in the associated stack.

Assignments (2)
CHANGE OF NAME Recorded Nov 21, 2024
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 069431/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2016
From: TAMM, STEVEN
To: SALESFORCE.COM, INC.
Reel/Frame 039983/0792 →
Continuity (4)
Continuation 14636997 · Mar 3, 2015
Continuation 13085316 · Apr 12, 2011
Provisional Application 61324958 · Apr 16, 2010
Related Publication 20160378641A1 · Dec 29, 2016