|  | @@ -8,6 +8,7 @@
 | 
	
		
			
				|  |  |  package org.elasticsearch.xpack.transform.transforms;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import org.elasticsearch.ElasticsearchTimeoutException;
 | 
	
		
			
				|  |  | +import org.elasticsearch.ExceptionsHelper;
 | 
	
		
			
				|  |  |  import org.elasticsearch.action.ActionListener;
 | 
	
		
			
				|  |  |  import org.elasticsearch.action.LatchedActionListener;
 | 
	
		
			
				|  |  |  import org.elasticsearch.client.internal.ParentTaskAssigningClient;
 | 
	
	
		
			
				|  | @@ -43,6 +44,7 @@ import org.elasticsearch.xpack.transform.notifications.TransformAuditor;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.transform.persistence.InMemoryTransformConfigManager;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.transform.persistence.SeqNoPrimaryTermAndIndex;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.transform.persistence.TransformConfigManager;
 | 
	
		
			
				|  |  | +import org.elasticsearch.xpack.transform.persistence.TransformStatePersistenceException;
 | 
	
		
			
				|  |  |  import org.elasticsearch.xpack.transform.transforms.scheduling.TransformScheduler;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.time.Clock;
 | 
	
	
		
			
				|  | @@ -131,7 +133,12 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |              ActionListener<SeqNoPrimaryTermAndIndex> listener
 | 
	
		
			
				|  |  |          ) {
 | 
	
		
			
				|  |  |              if (failAt.contains(persistenceCallCount++)) {
 | 
	
		
			
				|  |  | -                listener.onFailure(exception);
 | 
	
		
			
				|  |  | +                listener.onFailure(
 | 
	
		
			
				|  |  | +                    new TransformStatePersistenceException(
 | 
	
		
			
				|  |  | +                        "FailingToPutStoredDocTransformConfigManager.putOrUpdateTransformStoredDoc is intentionally throwing an exception",
 | 
	
		
			
				|  |  | +                        exception
 | 
	
		
			
				|  |  | +                    )
 | 
	
		
			
				|  |  | +                );
 | 
	
		
			
				|  |  |              } else {
 | 
	
		
			
				|  |  |                  super.putOrUpdateTransformStoredDoc(storedDoc, seqNoPrimaryTermAndIndex, listener);
 | 
	
		
			
				|  |  |              }
 | 
	
	
		
			
				|  | @@ -154,7 +161,10 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |              if (seqNo != -1) {
 | 
	
		
			
				|  |  |                  if (seqNoPrimaryTermAndIndex.getSeqNo() != seqNo || seqNoPrimaryTermAndIndex.getPrimaryTerm() != primaryTerm) {
 | 
	
		
			
				|  |  |                      listener.onFailure(
 | 
	
		
			
				|  |  | -                        new VersionConflictEngineException(new ShardId("index", "indexUUID", 42), "some_id", 45L, 44L, 43L, 42L)
 | 
	
		
			
				|  |  | +                        new TransformStatePersistenceException(
 | 
	
		
			
				|  |  | +                            "SeqNoCheckingTransformConfigManager.putOrUpdateTransformStoredDoc is intentionally throwing an exception",
 | 
	
		
			
				|  |  | +                            new VersionConflictEngineException(new ShardId("index", "indexUUID", 42), "some_id", 45L, 44L, 43L, 42L)
 | 
	
		
			
				|  |  | +                        )
 | 
	
		
			
				|  |  |                      );
 | 
	
		
			
				|  |  |                      return;
 | 
	
		
			
				|  |  |                  }
 | 
	
	
		
			
				|  | @@ -266,7 +276,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.STARTED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(1));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -278,7 +288,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.STARTED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(2));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -290,7 +300,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.FAILED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(3));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -352,7 +362,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.STARTED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(1));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -377,7 +387,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.STARTED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(1));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -389,7 +399,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.STARTED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(2));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -401,7 +411,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                          listener
 | 
	
		
			
				|  |  |                      ),
 | 
	
		
			
				|  |  |                      e -> {
 | 
	
		
			
				|  |  | -                        assertThat(e, isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  | +                        assertThat(ExceptionsHelper.unwrapCause(e), isA(exceptionToThrow.getClass()));
 | 
	
		
			
				|  |  |                          assertThat(state.get(), equalTo(TransformTaskState.FAILED));
 | 
	
		
			
				|  |  |                          assertThat(indexer.getStatePersistenceFailures(), equalTo(3));
 | 
	
		
			
				|  |  |                      }
 | 
	
	
		
			
				|  | @@ -517,7 +527,7 @@ public class TransformIndexerFailureOnStatePersistenceTests extends ESTestCase {
 | 
	
		
			
				|  |  |                      listener
 | 
	
		
			
				|  |  |                  ),
 | 
	
		
			
				|  |  |                  e -> {
 | 
	
		
			
				|  |  | -                    assertThat(e, isA(VersionConflictEngineException.class));
 | 
	
		
			
				|  |  | +                    assertThat(ExceptionsHelper.unwrapCause(e), isA(VersionConflictEngineException.class));
 | 
	
		
			
				|  |  |                      assertThat(state.get(), equalTo(TransformTaskState.STARTED));
 | 
	
		
			
				|  |  |                      assertThat(indexer.getStatePersistenceFailures(), equalTo(1));
 | 
	
		
			
				|  |  |                  }
 |