DETAILED ACTION
The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA .
Claims 1-20 are pending.
Response to Arguments
Regarding 35 U.S.C. 101:
Applicant’s amendments and arguments regarding the rejection of claims 1-20 under 35 U.S.C. 101 have been fully considered and are found to be non-persuasive. The rejections of claims 1-20 under 35 U.S.C. 101 are maintained.
The applicant’s claimed invention is found to be directed towards the listed mental processes involved in determining request types and resource scheduling. Applicant’s claim language remains that of abstract idea: mental processes performed on generic computing devices without integration into a practical application through clear improvement to the technology of resource scheduling. To integrate, Examiner suggests introducing claim language detailing the actual handling of the request using the determined handling method and/or resources external to the server.
Regarding: Prior Art Rejections:
Applicant’s amendments and arguments regarding the rejection of claims 1-20 under 35 U.S.C. 103 have been fully considered and are moot due to new grounds of rejection necessitated by amendment.
Claim Rejections - 35 USC § 101
35 U.S.C. 101 reads as follows:
Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title.
Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention recites a judicial exception and is directed to that judicial exception, an abstract idea, as it has not been integrated into practical application. The claims further do not recite significantly more than the judicial exception. Examiner has evaluated the claims under the framework provided in the 2019 Patent Eligibility Guidance published in the Federal Register 01/07/2019 and has provided such analysis below.
Step 1:
Claims 1-7 are directed towards a process (i.e., method). Claims 8-14 are directed towards a machine (i.e., server device). Claims 15-20 are directed towards a machine (i.e., non-transitory machine-readable medium).
Step 2A Prong 1:
In order to evaluate the Step 2A inquiry “Is the claim directed to a law of nature, a natural
phenomenon or an abstract idea?” we must determine, at Step 2A Prong 1, whether the claim recites a law of nature, a natural phenomenon or an abstract idea.
Claims 1, 8, and 15 recite judicial exceptions in the form of abstract ideas/mathematics. Claims 1, 8, and 15 recite the mental process:
“determining, by a filter of the server device, a type of the request” (i.e., one is able to evaluate a request for type) and “determining, by the controller, how to handle the request as one of: servicing the request, enqueuing the request, or rejecting the request” (i.e., one is able to make the judgement to handle a request in a certain manner), and “the rate of recent request traffic determined by counting requests having the type determined by the filter that have been received by the controller during a preceding time interval of predetermined duration” (i.e., one is able to utilize judgement for request type and maintain a count for the specific filtered messages).
Step 2A Prong 2:
Do the claims recite additional elements that integrate the judicial exception into a practical application?
Claims 1, 8, and 15 recite the additional elements:
“a server device”, “a filter of the server device”, “a controller selected from a plurality of controllers of the server device”, “wherein servicing of the request involves use of one or more resources external to the server”. Such additional element(s) represent adding the words “apply it” (or an equivalent) with the judicial exception, or mere instructions to implement an abstract idea on a computer, or merely uses a computer as a tool to perform an abstract idea MPEP 2106.05(f) which does not integrate the judicial exception into a practical application or amount to significantly more.
“where different ones of the plurality of controllers are configured to service different types of API requests”, “wherein the determining of how to handle the request is based at least in part upon a rate of recent request traffic received by the controller”. Such additional element(s) represent linking the judicial exception to the technological environment or field of use MPEP 2106.05(h) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea.
“receiving a request by an application programming interface (API) of a server device”, “sending, by the filter, the request to a controller selected from a plurality of controllers of the server device based on the request type”. Such additional element(s) represent insignificant extra-solution data gathering/transmitting activity MPEP 2106.05(g) and is well-understood, routine, and conventional in the art ((buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network)) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea.
Step 2B:
Do the claims recite additional elements that amount to significantly more than the judicial exception?
As per claims 1, 8, and 15, the claims do not include additional elements, alone or in combination, that are sufficient to amount to significantly more than the judicial exception. As discussed above with respect to integration of the abstract idea into a practical application, the additional elements amount to no more than generic computing components as tools to apply the abstract idea MPEP 2106.05(f), merely represent insignificant extra-solution data gathering activity MPEP 2106.05(g), or generally link the use of the judicial exception to a particular technological environment or field of use MPEP 2106.05(h) which do not amount to
significantly more than the abstract idea. Furthermore, the additional element involving data gathering and transmission are well-understood, routine, and conventional in the field ((buySAFE, Inc. v. Google, Inc., 765 F.3d 1350, 1355, 112 USPQ2d 1093, 1096 (Fed. Cir. 2014) (computer receives and sends information over a network)).
Having concluded analysis within the provided framework, independent claims 1, 8, and 15 do not recite patent eligible subject matter under 35 U.S.C. § 101.
Dependent claims 2-7, 9-14, and 16-20 do not recite additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 2-7, 9-14, and 16-20 are not eligible subject matter under 35 U.S.C § 101.
Claims 2, 9, and 16 further recite additional elements: “enqueuing the request in a first queue” and “enqueuing the request in a second request queue of the controller”. Such additional element(s) represent linking the judicial exception to the technological environment or field of use MPEP 2106.05(h) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Claims 2, 9, and 16 do not recite any additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 3, 10, and 17 are not eligible subject matter under 35 U.S.C § 101.
Claims 3, 10, and 17 further recites the mental process: “assigning the request to a thread of the controller” (i.e., one is able to make the judgement to assign a task to a thread). Claims 3, 10, and 17 do not recite any additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 3, 10, and 17 are not eligible subject matter under 35 U.S.C § 101.
Claims 4, 11, and 18 recites additional element: “the controller is configured to have a maximum number of threads for servicing requests and a maximum number of threads for enqueuing threads”. Such additional element(s) represent linking the judicial exception to the technological environment or field of use MPEP 2106.05(h) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Claims 4, 11, and 18 do not recite any additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 4, 11, and 18 are not eligible subject matter under 35 U.S.C § 101.
Claims 5, 12, and 19 recites additional element: “another controller of the plurality has a maximum number of threads for servicing requests different from that of the controller”. Such additional element(s) represent linking the judicial exception to the technological environment or field of use MPEP 2106.05(h) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Claims 5, 12, and 19 do not recite any additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 5, 12, and 19 are not eligible subject matter under 35 U.S.C § 101.
Claims 6, 13, and 20 recites additional element: “the server device is part of a storage system”. Such additional element(s) represent linking the judicial exception to the technological environment or field of use MPEP 2106.05(h) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Claims 6, 13, and 20 do not recite any additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 6, 13, and 20 are not eligible subject matter under 35 U.S.C § 101.
Claims 7 and 14 recite additional element: “the server device is part of a storage array”. Such additional element(s) represent linking the judicial exception to the technological environment or field of use MPEP 2106.05(h) which does not integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Claims 7 and 14 do not recite any additional elements that integrate the judicial exception into a practical application or amount to significantly more than the abstract idea. Therefore, claims 7 and 14 are not eligible subject matter under 35 U.S.C § 101.
Claim Rejections - 35 USC § 103
The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action:
A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made.
Claims 1, 2, 6, 7, 8, 9, 13, 14, 15, 16, and 20 are rejected under 35 U.S.C. 103 as being unpatentable over Patiejunas et al. US 20140047040 A1 in view of Jacobson US 20030188045 A1 in view of Cooke et al. US 20130212603 A1.
Patiejunas and Jacobson are cited in a prior action.
Regarding claim 1, Patiejunas teaches the invention substantially as claimed including:
A method comprising:
receiving a request by an application programming interface (API) of a server device (Fig 1 customers over network interface with Storage Service API), wherein servicing of the request involves use of one or more resources external to the server (Fig 12 Data Storage Service interfaces with Persistent Data Storage);
determining, by a filter of the server device, a type of the request ([0054] API request handler 218 may decode and/or parse an incoming API request to extract information, such as uniform resource identifier ("URI"), requested action and associated parameters, identity information, data object identifiers and the like; [0161] when a data storage service receives an initiate job API call, the service processes the API call according to the job type parameter specified in the call);
sending, by the filter, the request to a controller selected from a plurality of controllers of the server device (Fig 2 job data pathways from API request handler to Storage node managers 244); and
determining, by the controller, how to handle the request as one of: servicing the request, enqueuing the request, or rejecting the request ([0068] storage node manager 244 scans incoming jobs and sort the jobs by the type of data operation (e.g., read, write or delete), storage locations (e.g., volume, disk), customer account identifier and the like. The storage node manager 244 may then reorder, coalesce, group in batches or otherwise manipulate and schedule the jobs for processing. For example, in one embodiment, the storage node manager 244 may batch process all the write operations before all the read and delete operations. In another embodiment, the storage node manager 224 may perform operation coalescing. For another example, the storage node manager 224 may coalesce multiple retrieval jobs for the same object into one job or cancel a storage job and a deletion job for the same data object where the deletion job comes after the storage job).
While Patiejunas teaches partitioning jobs among multiple storage node managers, it does not explicitly teach it based on the request type, where different ones of the plurality of controllers are configured to service different types of API requests.
However, Jacobson teaches sending requests to controllers based on the request type, where different ones of the plurality of controllers are configured to service different types of API requests (Fig 5; [0028] Each storage controller 122A and 122B includes a table 124 that identifies the types of data access tasks handled by each storage controller or by each processor in the storage controllers).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to have combined Jacobson’s tasking system with processors designated to handle specific types of data access tasks with the system of Patiejunas. A person of ordinary skill in the art would have been motivated to make this combination to provide Patiejunas’ system with the advantage of balancing storage tasks across available processors (see Jacobson [0007] a need to balance workload tasks among multiple storage controllers or multiple processors to fully utilize the resources associated with each storage controller or processor).
Patiejunas and Jacobson do not explicitly teach wherein the determining of how to handle the request is based at least in part upon a rate of recent request traffic received by the controller, the rate of recent request traffic determined by counting requests having the type determined by the filter that have been received by the controller during a preceding time interval of predetermined duration.
However, Cooke teaches wherein the determining of how to handle the request is based at least in part upon a rate of recent request traffic received by the controller, the rate of recent request traffic determined by counting requests having the type determined by the filter that have been received by the controller during a preceding time interval of predetermined duration (Fig 4 Request limiter determines request handling via request rates by request type/classification).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to have combined Cooke’s request rate limiting method with the existing system. A person of ordinary skill in the art would have been motivated to make this combination to provide the resulting system with the advantage of regulating the usage of API resources (see Cooke [0020] the method may be applied to balance the use of specific API resources, such that one type of API request may be rate limited different from a second type of API request. For example, API REST requests directed at a "/SMS/Messages" resource type may be rate limited independently from API REST requests directed at a "/Calls" resource type. The method is preferably used in rate limiting based on request concurrency--requests that are actively serviced, processed, handled and/or in progress.).
Regarding claim 2, Patiejunas, Jacobson, and Cooke teach the method of claim 1.
Patiejunas further teaches wherein the receiving of the request includes enqueuing the request in a first queue (Fig 2 Job request queue 236), wherein the determining of how to handle the request includes enqueuing the request in a second request queue of the controller ([0068] storage node manager 244 scans incoming jobs and sort the jobs by the type of data operation (e.g., read, write or delete), storage locations (e.g., volume, disk), customer account identifier and the like. The storage node manager 244 may then reorder, coalesce, group in batches or otherwise manipulate and schedule the jobs for processing; Examiner notes: storage node manager determines and maintains ordering of jobs scheduling i.e., queue).
Regarding claim 6, Patiejunas, Jacobson, and Cooke teach the method of claim 1.
Patiejunas further teaches wherein the server device is part of a storage system (Fig 1 Data Storage System).
Regarding claim 7, Patiejunas, Jacobson, and Cooke teach the method of claim 1.
Patiejunas further teaches wherein the server device is part of a storage array (Figs 3 and 4 data storage arrays).
Regarding claim 8, it is the server device of claim 1. Therefore, it is rejected for the same reasons as claim 1.
Regarding claims 9, 13, and 14, they are the server devices of claims 2, 6, and 7 respectively. Therefore, they are rejected for the same reasons as claims 2, 6, and 7 respectively.
Regarding claim 15, it is the non-transitory machine-readable medium of claim 1. Therefore, it is rejected for the same reasons as claim 1.
Regarding claims 16 and 20, they are the non-transitory machine-readable media of claims 2 and 6 respectively. Therefore, they are rejected for the same reasons as claims 2 and 6 respectively.
Claims 3-5, 10-12, and 17-19 are rejected under 35 U.S.C. 103 as being unpatentable over Patiejunas et al. US 20140047040 A1 in view of Jacobson US 20030188045 A1 in view of Cooke et al. US 20130212603 A1 in further view of Lloyd US 20190188034 A1.
Regarding claim 3, Patiejunas, Jacobson, and Cooke teach the method of claim 1.
While Patiejunas teaches dispatching storage jobs, it does not explicitly teach wherein the determining of how to handle the request includes assigning the request to a thread of the controller. However, Lloyd teaches wherein the determining of how to handle the request includes assigning the request to a thread of the controller (Fig 2 Schedule work to only available thread/Schedule work to most recently available thread).
It would have been obvious to a person having ordinary skill in the art before the effective filing date of the invention to have combined Lloyd’s threading of work requests with the system of Patiejunas, Jacobson, and Sem. A person of ordinary skill in the art would have been motivated to make this combination to provide Patiejunas, Jacobson, and Cooke’s system with the advantage of organizing the execution of multiple tasks on available processing resources (see Lloyd [0001-0003] processors may use threads to complete tasks or work orders, A software thread, which may be referred to as a thread of execution (or simply a thread) is a software unit. In a multi-processor/multi-core system, multiple threads can be executed in parallel. That is, each of the processors or cores may execute a thread simultaneously. One thread can pass a request to another thread to cause the request to be executed).
Regarding claim 4, Patiejunas, Jacobson, Cooke and Lloyd teach the method of claim 3.
Lloyd further teaches wherein the controller is configured to have a maximum number of threads for servicing requests and a maximum number of threads for enqueuing threads ([0020] the maximum core thread pool size to indicate how many threads can be added to the thread pool 150 before reaching the maximum; [0014] Once the work queue is full, new threads are created until a pre-set “maximum” size is reached).
Regarding claim 5, Patiejunas, Jacobson, Cooke and Lloyd teach the method of claim 4.
Jacobson teaches different storage controllers having different processing resources ([0003] A storage controller contains one or more microprocessors … Increasing the number of microprocessors or increasing the number of data transmission paths in a storage controller increases the overall performance of the storage controller; [0004] multiple storage controllers are connected between the main computer system and the storage devices).
Lloyd further teaches wherein another controller of the plurality has a maximum number of threads for servicing requests different from that of the controller ([0014] new threads are created for every task until a pre-set “core” size is reached; Examiner notes: another controller with more cores will have a greater maximum thread limit for processing work).
Regarding claims 10-12, they are the server devices of claims 3-5. Therefore, they are rejected for the same reasons as claims 3-5 respectively.
Regarding claims 17-19, they are the non-transitory machine-readable media of claims 3-5 respectively. Therefore, they are rejected for the same reasons as claims 3-5 respectively.
Conclusion
Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a).
A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action.
Any inquiry concerning this communication or earlier communications from the
examiner should be directed to HARRISON LI whose telephone number is (703) 756-1469. The
examiner can normally be reached Monday-Friday 9:00am-5:30pm ET.
Examiner interviews are available via telephone, in-person, and video conferencing
using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is
encouraged to use the USPTO Automated Interview Request (AIR) at
http://www.uspto.gov/interviewpractice.
If attempts to reach the examiner by telephone are unsuccessful, the examiner’s
supervisor, Aimee Li can be reached on (571) 272-4169. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000.
/H.L./
Examiner, Art Unit 2195
/Aimee Li/Supervisory Patent Examiner, Art Unit 2195