|  | @@ -72,6 +72,10 @@ class WorkerTaskTrace(TaskTrace):
 | 
											
												
													
														|  |          self.loader = kwargs.pop("loader", current_loader)
 |  |          self.loader = kwargs.pop("loader", current_loader)
 | 
											
												
													
														|  |          super(WorkerTaskTrace, self).__init__(*args, **kwargs)
 |  |          super(WorkerTaskTrace, self).__init__(*args, **kwargs)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +        self._store_errors = True
 | 
											
												
													
														|  | 
 |  | +        if self.task.ignore_result:
 | 
											
												
													
														|  | 
 |  | +            self._store_errors = conf.STORE_ERRORS_EVEN_IF_IGNORED
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      def execute_safe(self, *args, **kwargs):
 |  |      def execute_safe(self, *args, **kwargs):
 | 
											
												
													
														|  |          try:
 |  |          try:
 | 
											
												
													
														|  |              return self.execute(*args, **kwargs)
 |  |              return self.execute(*args, **kwargs)
 | 
											
										
											
												
													
														|  | @@ -105,7 +109,8 @@ class WorkerTaskTrace(TaskTrace):
 | 
											
												
													
														|  |      def handle_retry(self, exc, type_, tb, strtb):
 |  |      def handle_retry(self, exc, type_, tb, strtb):
 | 
											
												
													
														|  |          """Handle retry exception."""
 |  |          """Handle retry exception."""
 | 
											
												
													
														|  |          message, orig_exc = exc.args
 |  |          message, orig_exc = exc.args
 | 
											
												
													
														|  | -        self.task.backend.mark_as_retry(self.task_id, orig_exc, strtb)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if self._store_errors:
 | 
											
												
													
														|  | 
 |  | +            self.task.backend.mark_as_retry(self.task_id, orig_exc, strtb)
 | 
											
												
													
														|  |          return super(WorkerTaskTrace, self).handle_retry(exc, type_,
 |  |          return super(WorkerTaskTrace, self).handle_retry(exc, type_,
 | 
											
												
													
														|  |                                                           tb, strtb)
 |  |                                                           tb, strtb)
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -113,8 +118,9 @@ class WorkerTaskTrace(TaskTrace):
 | 
											
												
													
														|  |          """Handle exception."""
 |  |          """Handle exception."""
 | 
											
												
													
														|  |          # mark_as_failure returns an exception that is guaranteed to
 |  |          # mark_as_failure returns an exception that is guaranteed to
 | 
											
												
													
														|  |          # be pickleable.
 |  |          # be pickleable.
 | 
											
												
													
														|  | -        stored_exc = self.task.backend.mark_as_failure(self.task_id,
 |  | 
 | 
											
												
													
														|  | -                                                       exc, strtb)
 |  | 
 | 
											
												
													
														|  | 
 |  | +        if self._store_errors:
 | 
											
												
													
														|  | 
 |  | +            stored_exc = self.task.backend.mark_as_failure(self.task_id,
 | 
											
												
													
														|  | 
 |  | +                                                           exc, strtb)
 | 
											
												
													
														|  |          return super(WorkerTaskTrace, self).handle_failure(
 |  |          return super(WorkerTaskTrace, self).handle_failure(
 | 
											
												
													
														|  |                  stored_exc, type_, tb, strtb)
 |  |                  stored_exc, type_, tb, strtb)
 | 
											
												
													
														|  |  
 |  |  
 |