Source: http://www.google.co.uk/patents/US7447786
Timestamp: 2016-06-29 07:29:25
Document Index: 513403042

Matched Legal Cases: ['Application No. 2', 'Application No. 2', 'Application No. 01968979', 'Application No. 01968979', 'Application No. 2', 'Application No. 01968979']

Patent US7447786 - Efficient locking of shared data that is accessed for reads in a cluster ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsDescribed herein are techniques for synchronizing access to resources in a multi node system by establishing a resource as a read-mostly resource based on one or more criteria, and allowing a node to acquire a shared lock, not granted by the master, on the read-mostly resource where no anti-lock exists...http://www.google.co.uk/patents/US7447786?utm_source=gb-gplus-sharePatent US7447786 - Efficient locking of shared data that is accessed for reads in a cluster databaseAdvanced Patent SearchPublication numberUS7447786 B2Publication typeGrantApplication numberUS 11/418,782Publication date4 Nov 2008Filing date5 May 2006Priority date9 May 2003Fee statusPaidAlso published asUS20060212573Publication number11418782, 418782, US 7447786 B2, US 7447786B2, US-B2-7447786, US7447786 B2, US7447786B2InventorsJuan Loaiza, Sashikanth Chandrasekaran, Neil MacNaughtonOriginal AssigneeOracle International CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (103), Non-Patent Citations (29), Referenced by (10), Classifications (7), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetEfficient locking of shared data that is accessed for reads in a cluster database
US 7447786 B2Abstract
Described herein are techniques for synchronizing access to resources in a multi node system by establishing a resource as a read-mostly resource based on one or more criteria, and allowing a node to acquire a shared lock, not granted by the master, on the read-mostly resource where no anti-lock exists for the resource.
This application is related to U.S. patent application Ser. No. 10/435,229, filed on May 9, 2003 entitled “Using Local Locks for Global Synchronization in Multi-Node Systems”, by Juan R. Loaiza, now U.S. Pat. No. 7,376,744, Neil James Scott Macnaughton and Sashikanth Chandrasekaran, which is related to prior U.S. patent application Ser. No. 11/132,807, filed on May 18, 2005 entitled “Determining Affinity In A Cluster”, by Neil James Scott Macnaughton and Sashikanth Chandrasekaran, and U.S. patent application Ser. No. 11/132,811, filed on May 18, 2005 entitled “Creating And Dissolving Affinity Relationships In A Cluster”, by Juan R. Loaiza, Neil James Scott Macnaughton and Sashikanth Chandrasekaran. The entire disclosure of all of these aforementioned previously-filed applications are hereby incorporated by reference as if fully set forth herein, and this application claims priority to all aforementioned previously-filed applications.
In contrast to a single node system, a multi-node system consists of network of computing devices or “nodes,” each of which may be a multi-processing system. Each of the nodes can access a set of shared resources. Multi-node systems use synchronization mechanisms, referred to as global synchronization mechanisms, to control access to the set of shared resources by nodes in the multi-node system.
Techniques have been developed for establishing resource-to-master-node assignments based on the affinity between (1) nodes and (2) the objects to which the resources belong. In this context, an “object” may be any entity that includes resources that are protected by locks. The types of resources to which the techniques described herein may be applied may vary based on the type of system in which the techniques are used. For example, within a relational database system, “resources” could include data blocks, tables, table partitions, segments, extents, indexes, Large Objects (LOBs), etc. Within a file system, “resources” could include files, sets of file system metadata, etc. Within a storage system, “resources” could include storage devices, disk sectors, etc.
If data has affinity to an instance, the mastership for the data is dynamically transferred to this instance and the instance will be able to obtain “affinity locks” for the data. Affinity locks are so termed because they are granted to a master for the resource whose mastership was acquired by affinity. As master, it may create a lock without coordinating with another node and/or lock manager. If the data does not have affinity to a single instance, the mastership for this data may be uniformly distributed across all instances and each instance would obtain regular locks on blocks of the data.
When a node wishes a shared lock on a read-mostly resource, it unilaterally grants itself a “read-mostly lock”, that is, grants itself the lock without undertaking messaging with a master or other node to coordinate acquisition of the lock. Thus, the messaging overhead of requesting a lock with a master is avoided.
While a read-mostly lock for a resource may be unilaterally acquired by a node, a node seeking an exclusive lock on a resource must request the exclusive lock from the master of the resource. To grant the exclusive lock on the resource, the master must ensure that other nodes do not have a shared lock (or other form of lock) despite not knowing which other nodes have unilaterally acquired a read-mostly lock, and must block other nodes from unilaterally acquiring a read-mostly shared lock once the exclusive lock is granted despite the fact that the other nodes do not request a read-mostly lock from the master. To this end, the master grants an “anti-lock” for the resource to the other nodes. The granting of an anti-lock to a node is not completed unless that node does not have a shared lock or relinquishes a shared lock. While the other nodes hold the anti-lock on the resource, the other nodes do not unilaterally grant themselves a read-mostly lock on the resource.
According to an embodiment, resources with accesses that fall under an access pattern of mostly reads are designated as read-mostly resources. In order to determine whether a resource falls under an access pattern of mostly reads, an in-memory table is utilized to map object numbers to the number of read locks and write locks that have been granted to each instance. According to an embodiment, the in-memory table also tracks whether a read-lock was a result of a lock grant or a block transfer. An embodiment of this in-memory table is described in greater detail in Related Application, U.S. patent application Ser. No. 11/132,807, filed on May 18, 2005 entitled “Determining Affinity In A Cluster”, by Neil James Scott Macnaughton and Sashikanth Chandrasekaran.
If the request is for a shared lock 212, then a determination is made whether the object sought to be accessed is a read-mostly object, as discussed further herein 216. If not, the regular locking protocol of sending a message to the master is followed 218. If yes, then a determination is made whether an anti-lock, as described further herein, exists for the particular block sought to be accessed 220. If an anti-lock exists, then the regular locking protocol of sending a message to the master is followed 222. If no anti-lock exists, the lock manager grants a “read-mostly lock” 224 as discussed further herein.
According to an embodiment, the techniques described herein partition the in-memory lock representation of lock structures pertaining to the resource for which the transition is being processed into windows, as described in prior U.S. patent application Ser. No. 10/832,527, filed on Apr. 26, 2004 entitled “Techniques for Multiple Window Resource Remastering Among Nodes of a Cluster”, by Wilson Wai Shun Chan, Sashikanth Chandrasekaran and Tolga Yurek.
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS396402914 Apr 197515 Jun 1976International Computers LimitedInformation retrieval systemsUS41187887 Mar 19773 Oct 1978Bell Telephone Laboratories, IncorporatedAssociative information retrievalUS425579614 Feb 197810 Mar 1981Bell Telephone Laboratories, IncorporatedAssociative information retrieval continuously guided by search status feedbackUS443576616 Jun 19816 Mar 1984International Business Machines CorporationNested resource control using locking and unlocking routines with use counter for plural processesUS460600217 Aug 198312 Aug 1986Wang Laboratories, Inc.B-tree structured data base using sparse array bit maps to store inverted listsUS467755030 Sep 198330 Jun 1987Amalgamated Software Of North America, Inc.Method of compacting and searching a data indexUS476977228 Feb 19856 Sep 1988Honeywell Bull, Inc.Automated query optimization method using both global and parallel local optimizations for materialization access planning for distributed databasesUS47746576 Jun 198627 Sep 1988International Business Machines CorporationIndex key range estimatorUS48111998 May 19877 Mar 1989Kuechler William LSystem for storing and manipulating information in an information baseUS481121725 Mar 19867 Mar 1989Japan Association For International Chemical InformationMethod of storing and searching chemical structure dataUS481497111 Sep 198521 Mar 1989Texas Instruments IncorporatedVirtual memory recovery system using persistent roots for selective garbage collection and sibling page timestamping for defining checkpoint stateUS481703615 Mar 198528 Mar 1989Brigham Young UniversityComputer system and method for data base indexing and information retrievalUS482746226 Mar 19872 May 1989International Business Machines CorporationModular data storage directories for large-capacity data storage unitsUS482942725 May 19849 May 1989Data General CorporationDatabase query code generation and optimization based on the cost of alternate access methodsUS494547521 Nov 198931 Jul 1990Apple Computer, Inc.Hierarchical file system to provide cataloging and retrieval of dataUS494732015 Jul 19887 Aug 1990International Business Machines CorporationMethod for referential constraint enforcement in a database management systemUS49567742 Sep 198811 Sep 1990International Business Machines CorporationData base optimizer using most frequency values statisticsUS504387215 Jul 198827 Aug 1991International Business Machines CorporationAccess path optimization using degrees of clusteringUS506014416 Mar 198922 Oct 1991Unisys CorporationLocking control with validity status indication for a multi-host processor system that utilizes a record lock processor and a cache memory for each host processorUS509185225 Jan 198925 Feb 1992Hitachi, Ltd.System for optimizing query processing in a relational databaseUS516122713 Nov 19893 Nov 1992International Business Machines CorporationMultilevel locking system and methodUS520297117 Dec 199013 Apr 1993International Business Machines CorporationSystem for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lockUS52376782 Mar 198917 Aug 1993Kuechler William LSystem for storing and manipulating information in an information baseUS524164813 Feb 199031 Aug 1993International Business Machines CorporationHybrid technique for joining tablesUS525131823 Aug 19895 Oct 1993Hitachi, Ltd.Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resourceUS525736516 Mar 199026 Oct 1993Powers Frederick ADatabase system with multi-dimensional summary search tree nodes for reducing the necessity to access recordsUS528552822 Feb 19918 Feb 1994International Business Machines CorporationData structures and algorithms for managing lock states of addressable element rangesUS528752112 Jun 199015 Feb 1994Hitachi, Ltd.Method and apparatus for releasing and obtaining shared and exclusive locksUS53255254 Apr 199128 Jun 1994Hewlett-Packard CompanyMethod of automatically controlling the allocation of resources of a parallel processor computer system by calculating a minimum execution time of a task and scheduling subtasks against resources to execute the task in the minimum timeUS539453118 Nov 199128 Feb 1995International Business Machines CorporationDynamic storage allocation system for a prioritized cacheUS53981994 Mar 199214 Mar 1995Lefons; EzioMany-valued logic processor for data query systemsUS54036392 Sep 19924 Apr 1995Storage Technology CorporationFile server having snapshot application data groupsUS540865315 Apr 199218 Apr 1995International Business Machines CorporationEfficient data base access using a shared electronic store in a multi-system environment with shared disksUS54106976 Oct 199325 Apr 1995International Business Machines CorporationConcurrency management using version identification of shared data as a supplement to use of locksUS543291928 Dec 199211 Jul 1995Digital Equipment CorporationSequential reference management for cache memoriesUS54407325 Feb 19938 Aug 1995Digital Equipment Corp., Pat. Law Gr.Key-range locking with index treesUS544074313 Jun 19948 Aug 1995Fujitsu LimitedDeadlock detecting systemUS54427636 Dec 199415 Aug 1995International Business Machines CorporationSystem and method for preventing deadlock in multiprocessor multiple resource instructionsUS545244721 Dec 199219 Sep 1995Sun Microsystems, Inc.Method and apparatus for a caching file serverUS545410826 Jan 199426 Sep 1995International Business Machines CorporationDistributed lock manager using a passive, state-full control-serverUS551117823 Nov 199323 Apr 1996Hitachi, Ltd.Cache control system equipped with a loop lock indicator for indicating the presence and/or absence of an instruction in a feedback loop sectionUS555102711 Sep 199527 Aug 1996International Business Machines CorporationMulti-tiered indexing method for partitioned dataUS55510467 Jul 199427 Aug 1996International Business Machines CorporationMethod for non-hierarchical lock management in a multi-system shared data environmentUS55903081 Sep 199331 Dec 1996International Business Machines CorporationMethod and apparatus for reducing false invalidations in distributed systemsUS559675427 Oct 199521 Jan 1997Digital Equipment CorporationMethod for performing private lock managementUS56128651 Jun 199518 Mar 1997Ncr CorporationDynamic hashing method for optimal distribution of locks within a clustered systemUS561967520 May 19968 Apr 1997Storage Technology CorporationMethod and apparatus for cache memory management using a two level scheme including a bit mapped cache buffer history table and circular cache buffer listUS56491969 Nov 199515 Jul 1997Legent CorporationSystem and method for distributed storage management on networked computer systems using binary object identifiersUS568253731 Aug 199528 Oct 1997Unisys CorporationObject lock management system with improved local lock management and global deadlock detection in a parallel data processing systemUS568925522 Aug 199518 Nov 1997Hewlett-Packard CompanyMethod and apparatus for compressing and decompressing image dataUS575835924 Oct 199626 May 1998Digital Equipment CorporationMethod and apparatus for performing retroactive backups in a computer systemUS576165929 Feb 19962 Jun 1998Sun Microsystems, Inc.Method, product, and structure for flexible range locking of read and write requests using shared and exclusive locks, flags, sub-locks, and countersUS576853217 Jun 199616 Jun 1998International Business Machines CorporationMethod and distributed database file system for implementing self-describing distributed file objectsUS577839523 Oct 19957 Jul 1998Stac, Inc.System for backing up files from disk volumes on multiple nodes of a computer networkUS577844225 Mar 19967 Jul 1998Oracle CorporationMethod and apparatus for buffering data in a computer systemUS582900121 Jan 199727 Oct 1998Netiq CorporationDatabase updates over a networkUS584531828 Oct 19961 Dec 1998International Business Machines CorporationDasd I/O caching method and application including replacement policy minimizing data retrieval and storage costsUS589294521 Mar 19966 Apr 1999Oracle CorporationMethod and apparatus for distributing work granules among processes based on the location of data accessed in the work granulesUS589308611 Jul 19976 Apr 1999International Business Machines CorporationParallel file system and method with extensible hashingUS59498768 Jan 19977 Sep 1999Intertrust Technologies CorporationSystems and methods for secure transaction management and electronic rights protectionUS596396029 Oct 19965 Oct 1999Oracle CorporationMethod and apparatus for queuing updates in a computer systemUS596396311 Jul 19975 Oct 1999International Business Machines CorporationParallel file system and buffer management arbitrationUS597049510 Jun 199619 Oct 1999International Business Machines CorporationMethod and apparatus for achieving uniform data distribution in a parallel database systemUS599971221 Oct 19977 Dec 1999Sun Microsystems, Inc.Determining cluster membership in a distributed computer systemUS601466921 Oct 199711 Jan 2000Sun Microsystems, Inc.Highly-available distributed cluster configuration databaseUS602370611 Jul 19978 Feb 2000International Business Machines CorporationParallel file system and method for multiple node file accessUS60263944 Sep 199815 Feb 2000Hitachi, Ltd.System and method for implementing parallel operations in a database management systemUS60264742 May 199715 Feb 2000Mangosoft CorporationShared client-side web caching using globally addressable memoryUS603856325 Mar 199814 Mar 2000Sun Microsystems, Inc.System and method for restricting database access to managed object information using a permissions table that specifies access rights corresponding to user access rights to the managed objectsUS604436715 Apr 199828 Mar 2000Hewlett-Packard CompanyDistributed I/O storeUS604728326 Feb 19984 Apr 2000Sap AktiengesellschaftFast string searching and indexing using a search tree having a plurality of linked nodesUS605269723 Dec 199618 Apr 2000Microsoft CorporationReorganization of collisions in a hash bucket of a hash table to improve system performanceUS610149515 Sep 19988 Aug 2000Hitachi, Ltd.Method of executing partition operations in a parallel database systemUS611231524 Sep 199729 Aug 2000Nortel Networks CorporationProcess and apparatus for reducing software failures using sparing in distributed systemsUS61449839 Jun 19987 Nov 2000Oracle CorporationMethod and apparatus for dynamic lock granularity escalation and de-escalation in a computer systemUS617331324 Jun 19989 Jan 2001Oracle CorporationMethodology for hosting distributed objects at a predetermined node in a distributed systemUS618560115 Apr 19986 Feb 2001Hewlett-Packard CompanyDynamic load balancing of a network of client and server computersUS620907428 Apr 199827 Mar 2001International Business Machines CorporationAddress re-mapping for memory module using presence detect dataUS6253273 *6 Feb 199826 Jun 2001Emc CorporationLock mechanismUS625677331 Aug 19993 Jul 2001Accenture LlpSystem, method and article of manufacture for configuration management in a development architecture frameworkUS627249124 Aug 19987 Aug 2001Oracle CorporationMethod and system for mastering locks in a multiple server database systemUS629279516 Feb 199918 Sep 2001International Business Machines CorporationIndexed file system and a method and a mechanism for accessing data records from such a systemUS635383624 Nov 19985 Mar 2002Oracle CorporationMethod and apparatus for transferring data from the cache of one node to the cache of another nodeUS638162721 Sep 199830 Apr 2002Microsoft CorporationMethod and computer readable medium for discovering master DNS server computers for a given domain name in multiple master and multiple namespace configurationsUS645340427 May 199917 Sep 2002Microsoft CorporationDistributed data cache with memory allocation modelUS64969496 Aug 199917 Dec 2002International Business Machines Corp.Emergency backup system, method and program product thereforUS652990628 Jan 20004 Mar 2003Oracle CorporationTechniques for DLM optimization with re-mastering eventsUS666829510 Jun 200223 Dec 2003Oracle International CorporationAnticipatory lock mode conversions in a lock management systemUS67081981 Mar 200116 Mar 2004Oracle International CorporationEfficiently initiating lock state transitions for distributed resource objects that participate in a distributed lock management systemUS675161628 Jan 200015 Jun 2004Oracle International Corp.Techniques for DLM optimization with re-mapping responsibility for lock managementUS691538720 Jul 20015 Jul 2005Silicon Graphics, Inc.System and method for handling updates to memory in a distributed shared memory systemUS692045428 Jan 200019 Jul 2005Oracle International CorporationTechniques for DLM optimization with transferring lock informationUS696598316 Feb 200315 Nov 2005Faraday Technology Corp.Simultaneously setting prefetch address and fetch address pipelined stages upon branchUS708591123 Apr 20031 Aug 2006International Business Machines CorporationResizable cache sensitive hash tableUS7209990 *5 Apr 200524 Apr 2007Oracle International CorporationMaintain fairness of resource allocation in a multi-node environmentUS7246187 *30 Sep 200417 Jul 2007Emc CorporationMethod and apparatus for controlling exclusive access to a shared resource in a data storage systemUS200201477336 Apr 200110 Oct 2002Hewlett-Packard CompanyQuota management in client side data storage back-upUS200402257429 May 200311 Nov 2004Oracle International CorporationUsing local locks for global synchronization in multi-node systemsUS2005014954017 Feb 20057 Jul 2005Chan Wilson W.S.Remastering for asymmetric clusters in high-load scenariosUS200602069018 Mar 200514 Sep 2006Oracle International CorporationMethod and system for deadlock detection in a distributed environmentUS200602248055 Apr 20055 Oct 2006Angelo PruscinoMaintain fairness of resource allocation in a multi-node environmentUS2006026541418 May 200523 Nov 2006Loaiza Juan RCreating and dissolving affinity relationships in a clusterUS20070185872 *3 Feb 20069 Aug 2007Eugene HoAdaptive region locking* Cited by examinerNon-Patent CitationsReference1Aldred et al., "A Distributed Lock Manager or Fault Tolerant MPP," IEEE, 1995.2Apple, "OpenDoc Cookbook" , Jan. 1996.3Apple, "OpenDoc Cookbook".4Bhide, Anupam, "An Analysis of Three Transation Processing Architectures," Proceedings of the 14th VLDB Conference, Los Angeles, CA., 1988.5Copeland, George et al., "Data Placement In Bubba," ACM, Mar. 1988.6Corba, "Corbaservices: Common Object Services Specification."7Corba, "Corbaservices: Common Object Services Specification." ,Mar. 1995.8Current Claims in Canadian Patent Application No. 2, 448,050 (48 pgs), dated Oct. 1, 2004.9Current Claims in Canadian Patent Application No. 2, 448,050 (48 pgs).10Current Claims in European Patent Application No. 01968979.3-2212 (3 pgs), dated Aug. 6, 2004.11Current Claims in European Patent Application No. 01968979.3-2212 (3 pgs).12Current Claims in PCT Patent Application No. PCT/US02/06981 (8 pgs.), dated Mar. 10, 2004.13Current Claims in PCT Patent Application No. PCT/US02/06981 (8 pgs.).14Dewitt, David J. et al, A Performance Analysis of the Gamma Database Machine,: ACM, Mar. 1998.15Dye, Charles, "Multi-Master Replication," Oracle Distributed Systems, Chapter 12, O'Reilly and Associates, Apr. 1999, 54 pages.16Englert, Susanne, "A Benchmark of NonStop SQL Release 2 Demonstrating Near-Linear Speedup and Scaleup on Large Databases," May 1989.17Hermannsson, G., "Fast Locks in Distributed Shared Memory Systems," System Sciences, 1994, vol. 1: Architecture, Proceedings of the Twenty-Seventh Hawaii International Conference., (abstract only).18Hong Wei et al., "Optimization of Parallel Query Execution Plans in XPRS,", IEEE, Apr. 1991.19Mahapatra, Tushar et al., "Maintaining a Failover Database", Oracle Parallel Processing, Section 12.1, ProQuest Information and Learning, O'Reilly and Associates, Aug. 2000, 6 pages.20Molesky, Lory D et al., "Efficient Locking for Shared Memory Database Systems," Mar. 1994, 28 pages.21Molesky, Lory D. et al., "Database Locking Protocols for Large-Scale Cache-Coherent Shared Memory Multiprocessors: Design, Implementation and Performance," Jun. 6, 1995, pp. 1-24.22Office Action from Canadian Patent Application No. 2,448,050 dated Oct. 1, 2004 (2 pgs).23Office Action from European Patent Application No. 01968979.3-2212, dated Aug. 6, 2004 (3 pgs.).24Rahm, Erhard, "Concurrency and Coherency Control in Database Sharing Systems," Technical Report ZRI, Dec. 1991, revised Mar. 1993, pp. 1-62.25Stonebaraker, Michael et al., "The Design of XPRS," Proceeding of the 14th VLDB Conference, Los Angeles, CA., 1988.26Tenenbaum, Andrew S., "Structured Computer Organization, second Edition," Prentice-Hall Inc., Copyright 1984, pp. 10-12.27The Tandem Performance Group, "A Benchmark of NonStop SQL on the Debit Credit Transaction," ACM, Mar. 1987.28Written Opinion from PCT Patent Application No. PCT/US02/06981 dated Mar. 10, 2004.29Written Opinion from PCT Patent Application No. PCT/US02/06981 dated Oct. 3, 2004(8 pgs.).Referenced byCiting PatentFiling datePublication dateApplicantTitleUS8046633 *10 Dec 200925 Oct 2011International Business Machines CorporationImproving data availability during failure detection and recovery processing in a shared resource systemUS8352658 *27 May 20108 Jan 2013Microsoft CorporationFabric based lock manager serviceUS866695827 Nov 20094 Mar 2014International Business Machines CorporationApproaches to reducing lock communications in a shared disk databaseUS8868531 *16 Oct 201221 Oct 2014Apple Inc.Concurrent access methods for tree data structuresUS917104215 Mar 201327 Oct 2015Emc CorporationParallel processing database tree structureUS20110131192 *2 Jun 2011International Business Machines CorporationApproaches to Reducing Lock Communications In a Shared Disk DatabaseUS20110145627 *16 Jun 2011International Business Machines CorporationImproving data availability during failure detection and recovery processing in a shared resource systemUS20110225373 *16 Nov 201015 Sep 2011Hitachi, Ltd.Computer system and method of data cache managementUS20110296069 *1 Dec 2011Microsoft CorporationFabric Based Lock Manager ServiceUS20140074841 *16 Oct 201213 Mar 2014Apple Inc.Concurrent access methods for tree data structures* Cited by examinerClassifications U.S. Classification709/229, 710/200International ClassificationG06F13/00, G06F15/173, G06F15/16Cooperative ClassificationG06F9/526European ClassificationG06F9/52ELegal EventsDateCodeEventDescription5 May 2006ASAssignmentOwner name: ORACLE INTERNATIONAL CORPORATION, CALIFORNIAFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LOAIZA, JUAN;CHANDRASEKARAN, SASHIKANTH;MACNAUGHTON, NEIL;REEL/FRAME:017871/0829Effective date: 2006050411 Apr 2012FPAYFee paymentYear of fee payment: 420 Apr 2016FPAYFee paymentYear of fee payment: 8RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services