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