|  | @@ -29,7 +29,7 @@ from celery import concurrency as _concurrency
 | 
	
		
			
				|  |  |  from celery import platforms
 | 
	
		
			
				|  |  |  from celery.app import app_or_default, set_default_app
 | 
	
		
			
				|  |  |  from celery.app.abstract import configurated, from_config
 | 
	
		
			
				|  |  | -from celery.exceptions import SystemTerminate
 | 
	
		
			
				|  |  | +from celery.exceptions import SystemTerminate, TaskRevokedError
 | 
	
		
			
				|  |  |  from celery.task import trace
 | 
	
		
			
				|  |  |  from celery.utils.functional import noop
 | 
	
		
			
				|  |  |  from celery.utils.imports import qualname, reload_from_cwd
 | 
	
	
		
			
				|  | @@ -369,6 +369,9 @@ class WorkController(configurated):
 | 
	
		
			
				|  |  |          """Process task by sending it to the pool of workers."""
 | 
	
		
			
				|  |  |          try:
 | 
	
		
			
				|  |  |              req.execute_using_pool(self.pool)
 | 
	
		
			
				|  |  | +        except TaskRevokedError:
 | 
	
		
			
				|  |  | +            if self.semaphore:  # (Issue #877)
 | 
	
		
			
				|  |  | +                self.semaphore.release()
 | 
	
		
			
				|  |  |          except Exception, exc:
 | 
	
		
			
				|  |  |              logger.critical('Internal error: %r\n%s',
 | 
	
		
			
				|  |  |                              exc, traceback.format_exc(), exc_info=True)
 |