| 
									
										
										
										
											2021-04-19 03:41:13 +08:00
										 |  |  | // Copyright (c) 2015-2021 MinIO, Inc.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // This file is part of MinIO Object Storage stack
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // This program is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU Affero General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or
 | 
					
						
							|  |  |  | // (at your option) any later version.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // This program is distributed in the hope that it will be useful
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU Affero General Public License for more details.
 | 
					
						
							|  |  |  | //
 | 
					
						
							|  |  |  | // You should have received a copy of the GNU Affero General Public License
 | 
					
						
							|  |  |  | // along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							| 
									
										
										
										
											2016-09-20 04:14:55 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | package cmd | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2019-08-29 07:12:57 +08:00
										 |  |  | 	"errors" | 
					
						
							| 
									
										
										
										
											2016-09-20 04:14:55 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-05 01:30:59 +08:00
										 |  |  | const ( | 
					
						
							| 
									
										
										
										
											2021-03-04 10:36:43 +08:00
										 |  |  | 	lockRESTVersion       = "v6" // Add Refresh API
 | 
					
						
							| 
									
										
										
										
											2020-02-21 13:59:57 +08:00
										 |  |  | 	lockRESTVersionPrefix = SlashSeparator + lockRESTVersion | 
					
						
							| 
									
										
										
										
											2019-11-05 01:30:59 +08:00
										 |  |  | 	lockRESTPrefix        = minioReservedBucketPath + "/lock" | 
					
						
							|  |  |  | ) | 
					
						
							| 
									
										
										
										
											2019-04-18 14:16:27 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | const ( | 
					
						
							| 
									
										
										
										
											2021-01-26 02:01:27 +08:00
										 |  |  | 	lockRESTMethodHealth      = "/health" | 
					
						
							| 
									
										
										
										
											2021-03-04 10:36:43 +08:00
										 |  |  | 	lockRESTMethodRefresh     = "/refresh" | 
					
						
							| 
									
										
										
										
											2021-01-26 02:01:27 +08:00
										 |  |  | 	lockRESTMethodLock        = "/lock" | 
					
						
							|  |  |  | 	lockRESTMethodRLock       = "/rlock" | 
					
						
							|  |  |  | 	lockRESTMethodUnlock      = "/unlock" | 
					
						
							|  |  |  | 	lockRESTMethodRUnlock     = "/runlock" | 
					
						
							|  |  |  | 	lockRESTMethodForceUnlock = "/force-unlock" | 
					
						
							| 
									
										
										
										
											2019-08-06 02:45:30 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-26 10:21:52 +08:00
										 |  |  | 	// lockRESTOwner represents owner UUID
 | 
					
						
							|  |  |  | 	lockRESTOwner = "owner" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-06 02:45:30 +08:00
										 |  |  | 	// Unique ID of lock/unlock request.
 | 
					
						
							|  |  |  | 	lockRESTUID = "uid" | 
					
						
							| 
									
										
										
										
											2020-09-26 10:21:52 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-08-06 02:45:30 +08:00
										 |  |  | 	// Source contains the line number, function and file name of the code
 | 
					
						
							|  |  |  | 	// on the client node that requested the lock.
 | 
					
						
							|  |  |  | 	lockRESTSource = "source" | 
					
						
							| 
									
										
										
										
											2020-10-25 04:23:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	// Quroum value to be saved along lock requester info, useful
 | 
					
						
							|  |  |  | 	// in verifying stale locks
 | 
					
						
							|  |  |  | 	lockRESTQuorum = "quorum" | 
					
						
							| 
									
										
										
										
											2019-04-18 14:16:27 +08:00
										 |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-11-26 08:39:43 +08:00
										 |  |  | var ( | 
					
						
							| 
									
										
										
										
											2020-09-24 03:00:29 +08:00
										 |  |  | 	errLockConflict       = errors.New("lock conflict") | 
					
						
							|  |  |  | 	errLockNotInitialized = errors.New("lock not initialized") | 
					
						
							| 
									
										
										
										
											2021-03-04 10:36:43 +08:00
										 |  |  | 	errLockNotFound       = errors.New("lock not found") | 
					
						
							| 
									
										
										
										
											2019-11-26 08:39:43 +08:00
										 |  |  | ) |