IP Library › Granted Patent US 10,114,573
Granted Patent B1
US 10,114,573 · App. 15/497,627 · Granted Oct 30, 2018

Dynamic reduction of stack-overflow errors in a recursive data-serialization algorithm

Inventors: Timothy P. Ellison (Hampshire, GB); Amit S. Mane (Bangalore, IN); Sathiskumar Palaniappan (Namakkal, IN); Vijay Sundaresan (North York, CA)
Assignee: International Business Machines Corporation
G06F3/0638G06F3/0619G06F3/0652G06F3/0673
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 10,114,573
App. No.
15/497,627
Granted
Oct 30, 2018
Kind
B1
Abstract

A data-serialization system initially uses a recursive serialization algorithm to serialize a hierarchy of nested data objects by translating those objects into a serial stream of data. The system determines that a stack-overflow error is likely to occur whenever the number of objects serialized by the system exceeds a threshold value, or whenever the stack has reached an unacceptable level of utilization. When the system determines that a stack-overflow error is likely or if the system detects that a stack-overflow error will definitely occur if another object is serialized, the system either transfers control to a nonrecursive algorithm that does not require a stack data structure or reduces stack utilization by transferring contents of the stack to a variable-size queue-like data structure.

Claims (65)

1. A data-serialization system comprising a processor, a memory coupled to the processor, and a computer-readable hardware storage device coupled to the processor, the storage device containing program code configured to be run by the processor via the memory to implement a method for dynamic reduction of stack-overflow errors in a recursive data-serialization procedure, the method comprising:

launching the recursive data-serialization procedure to serialize each object of a hierarchy of serializable data objects, where the recursive data-serialization procedure temporarily stores a state of a partially serialized object as a frame of a stack data structure,

where each object is capable of comprising at least one field,

where each field of the at least one field is either a primitive field or a reference field,

where a primitive field stores a value,

where a reference field of a parent object of the hierarchy identifies another object of the hierarchy, and

where the another object is organized within the hierarchy as a child of the reference field;

determining that a threshold condition has been satisfied, where the threshold condition is selected, where the satisfaction of the threshold condition indicates an unacceptable likelihood that the recursive data-serialization procedure will generate a stack-overflow error; and

performing a corrective action in response to the determining,

where the corrective action is capable of preventing the stack-overflow error, and

where the corrective action comprises:

pausing the recursive data-serialization procedure;

deleting data from the stack data structure by popping frames of the stack data structure;

storing the popped frames in a variable-size queue-like data structure; and

resuming, by the recursive data-serialization procedure, serialization of the hierarchy of serializable data objects.

2. The system of claim 1 , where the threshold condition is a determination that a number of objects of the hierarchy that have been serialized by the recursive data-serialization procedure exceeds a threshold value.

3. The system of claim 1 , where the threshold condition is a determination that a utilization of the stack exceeds a threshold value.

4. The system of claim 1 , where the threshold condition is a determination that the recursive data-serialization procedure has triggered a stack-overflow error.

5. The system of claim 1 , where the corrective action further comprises:

terminating the recursive data-serialization procedure; and

initiating a nonrecursive data-serialization procedure that resumes serialization of the hierarchy of serializable data objects from the point at which the recursive data-serialization procedure was terminated.

6. The system of claim 1 , where a first object of the hierarchy is an instance of an object class and where each field comprised by the first object is capable of being a subclass of the object class.

7. A method for dynamic reduction of stack-overflow errors in a recursive data-serialization procedure, the method comprising:

launching the recursive data-serialization procedure to serialize each object of a hierarchy of serializable data objects, where the recursive data-serialization procedure temporarily stores a state of a partially serialized object as a frame of a stack data structure,

where each object is capable of comprising at least one field,

where each field of the at least one field is either a primitive field or a reference field,

where a primitive field stores a value,

where a reference field of a parent object of the hierarchy identifies another object of the hierarchy, and

where the another object is organized within the hierarchy as a child of the reference field;

determining that a threshold condition has been satisfied, where the threshold condition is selected, where the satisfaction of the threshold condition indicates an unacceptable likelihood that the recursive data-serialization procedure will generate a stack-overflow error; and

performing a corrective action in response to the determining,

where the corrective action is capable of preventing the stack-overflow error, and

where the corrective action comprises:

pausing the recursive data-serialization procedure;

deleting data from the stack data structure by popping frames of the stack data structure;

storing the popped frames in a variable-size queue-like data structure; and

resuming, by the recursive data-serialization procedure, serialization of the hierarchy of serializable data objects.

8. The method of claim 7 , where the threshold condition is a determination that a number of objects of the hierarchy that have been serialized by the recursive data-serialization procedure exceeds a threshold value.

9. The method of claim 7 , where the threshold condition is a determination that a utilization of the stack exceeds a threshold value.

10. The method of claim 7 , where the threshold condition is a determination that the recursive data-serialization procedure has triggered a stack-overflow error.

11. The method of claim 7 , where the corrective action further comprises:

terminating the recursive data-serialization procedure; and

initiating a nonrecursive data-serialization procedure that resumes serialization of the hierarchy of serializable data objects from the point at which the recursive data-serialization procedure was terminated.

12. The method of claim 7 , further comprising providing at least one support service for at least one of creating, integrating, hosting, maintaining, and deploying computer-readable program code in the computer system, wherein the computer-readable program code in combination with the computer system is configured to implement the launching, the determining, and the performing.

13. A computer program product, comprising a computer-readable hardware storage device having a computer-readable program code stored therein, the program code configured to be executed by a data-serialization system comprising a processor, a memory coupled to the processor, and a computer-readable hardware storage device coupled to the processor, the storage device containing program code configured to be run by the processor via the memory to implement a method for dynamic reduction of stack-overflow errors in a recursive data-serialization procedure, the method comprising:

launching the recursive data-serialization procedure to serialize each object of a hierarchy of serializable data objects, where the recursive data-serialization procedure temporarily stores a state of a partially serialized object as a frame of a stack data structure,

where each object is capable of comprising at least one field,

where each field of the at least one field is either a primitive field or a reference field,

where a primitive field stores a value,

where a reference field of a parent object of the hierarchy identifies another object of the hierarchy, and

where the another object is organized within the hierarchy as a child of the reference field;

determining that a threshold condition has been satisfied, where the threshold condition is selected, where the satisfaction of the threshold condition indicates an unacceptable likelihood that the recursive data-serialization procedure will generate a stack-overflow error; and

performing a corrective action in response to the determining,

where the corrective action is capable of preventing the stack-overflow error, and

where the corrective action comprises:

pausing the recursive data-serialization procedure;

deleting data from the stack data structure by popping frames of the stack data structure;

storing the popped frames in a variable-size queue-like data structure; and

resuming, by the recursive data-serialization procedure, serialization of the hierarchy of serializable data objects.

14. The computer program product of claim 13 , where the threshold condition is a determination that a number of objects of the hierarchy that have been serialized by the recursive data-serialization procedure exceeds a threshold value.

15. The computer program product of claim 13 , where the threshold condition is a determination that a utilization of the stack exceeds a threshold value.

16. The computer program product of claim 13 , where the threshold condition is a determination that the recursive data-serialization procedure has triggered a stack-overflow error.

17. The computer program product of claim 13 , where the corrective action further comprises:

terminating the recursive data-serialization procedure; and

initiating a nonrecursive data-serialization procedure that resumes serialization of the hierarchy of serializable data objects from the point at which the recursive data-serialization procedure was terminated.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 26, 2017
From: ELLISON, TIMOTHY P.; MANE, AMIT S.; PALANIAPPAN, SATHISKUMAR; SUNDARESAN, VIJAY
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042149/0791 →
Cited By (2)
US 12,547,313 US 12,730,814