mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #22495 -- Locmem cache.add() failed with infinite timeouts
cache.add() incorrectly succeeded when there was an existing key with an infinite (None) timeout.
This commit is contained in:
		
				
					committed by
					
						 Claude Paroz
						Claude Paroz
					
				
			
			
				
	
			
			
			
						parent
						
							2ffa6ca73a
						
					
				
				
					commit
					af5f688392
				
			
							
								
								
									
										4
									
								
								django/core/cache/backends/locmem.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								django/core/cache/backends/locmem.py
									
									
									
									
										vendored
									
									
								
							| @@ -29,8 +29,8 @@ class LocMemCache(BaseCache): | ||||
|         self.validate_key(key) | ||||
|         pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL) | ||||
|         with self._lock.writer(): | ||||
|             exp = self._expire_info.get(key) | ||||
|             if exp is None or exp <= time.time(): | ||||
|             exp = self._expire_info.get(key, 0) | ||||
|             if exp is not None and exp <= time.time(): | ||||
|                 self._set(key, pickled, timeout) | ||||
|                 return True | ||||
|             return False | ||||
|   | ||||
							
								
								
									
										3
									
								
								tests/cache/tests.py
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								tests/cache/tests.py
									
									
									
									
										vendored
									
									
								
							| @@ -490,6 +490,9 @@ class BaseCacheTests(object): | ||||
|  | ||||
|         cache.add('key2', 'ham', None) | ||||
|         self.assertEqual(cache.get('key2'), 'ham') | ||||
|         added = cache.add('key1', 'new eggs', None) | ||||
|         self.assertEqual(added, False) | ||||
|         self.assertEqual(cache.get('key1'), 'eggs') | ||||
|  | ||||
|         cache.set_many({'key3': 'sausage', 'key4': 'lobster bisque'}, None) | ||||
|         self.assertEqual(cache.get('key3'), 'sausage') | ||||
|   | ||||
		Reference in New Issue
	
	Block a user