Skip to content

Commit

Permalink
HSEARCH-2445 Expose IndexManager in the ErrorContext
Browse files Browse the repository at this point in the history
  • Loading branch information
gustavonalle authored and Sanne committed Nov 23, 2016
1 parent aadcea8 commit c590830
Show file tree
Hide file tree
Showing 8 changed files with 52 additions and 3 deletions.
Expand Up @@ -27,6 +27,7 @@
import org.hibernate.search.exception.ErrorHandler;
import org.hibernate.search.exception.impl.ErrorContextBuilder;
import org.hibernate.search.indexes.spi.DirectoryBasedIndexManager;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.store.DirectoryProvider;
import org.hibernate.search.util.logging.impl.Log;
import org.hibernate.search.util.logging.impl.LoggerFactory;
Expand All @@ -40,6 +41,7 @@ class IndexWriterHolder {
private final ErrorHandler errorHandler;
private final ParameterSet indexParameters;
private final DirectoryProvider directoryProvider;
private final IndexManager indexManager;
private final String indexName;

// variable state:
Expand All @@ -64,6 +66,7 @@ class IndexWriterHolder {

IndexWriterHolder(ErrorHandler errorHandler, DirectoryBasedIndexManager indexManager) {
this.errorHandler = errorHandler;
this.indexManager = indexManager;
this.indexName = indexManager.getIndexName();
this.luceneParameters = indexManager.getIndexingParameters();
this.indexParameters = luceneParameters.getIndexParameters();
Expand Down Expand Up @@ -250,7 +253,7 @@ private void handleIOException(IOException ioe, ErrorContextBuilder errorContext
}
final ErrorContext errorContext;
if ( errorContextBuilder != null ) {
errorContext = errorContextBuilder.errorThatOccurred( ioe ).createErrorContext();
errorContext = errorContextBuilder.errorThatOccurred( ioe ).indexManager( indexManager ).createErrorContext();
this.errorHandler.handle( errorContext );
}
else {
Expand Down
Expand Up @@ -62,7 +62,7 @@ public void run() {
private void handleException(Exception e) {
ErrorContextBuilder builder = new ErrorContextBuilder();
builder.allWorkToBeDone( workList );
builder.errorThatOccurred( e );
builder.errorThatOccurred( e ).indexManager( resources.getIndexManager() );
resources.getErrorHandler().handle( builder.createErrorContext() );
}

Expand All @@ -75,6 +75,7 @@ private void applyUpdates() throws InterruptedException, ExecutionException {
AbstractWorkspaceImpl workspace = resources.getWorkspace();

ErrorContextBuilder errorContextBuilder = new ErrorContextBuilder();
errorContextBuilder.indexManager( resources.getIndexManager() );
errorContextBuilder.allWorkToBeDone( workList );

IndexWriterDelegate delegate = workspace.getIndexWriterDelegate( errorContextBuilder );
Expand All @@ -96,7 +97,7 @@ private void applyUpdates() throws InterruptedException, ExecutionException {
someFailureHappened = false;
}
catch (RuntimeException re) {
errorContextBuilder.errorThatOccurred( re );
errorContextBuilder.errorThatOccurred( re ).indexManager( resources.getIndexManager() );
if ( currentOperation != null ) {
errorContextBuilder.addWorkThatFailed( currentOperation );
}
Expand Down
Expand Up @@ -20,6 +20,7 @@
import org.hibernate.search.exception.ErrorHandler;
import org.hibernate.search.indexes.impl.PropertiesParseHelper;
import org.hibernate.search.indexes.spi.DirectoryBasedIndexManager;
import org.hibernate.search.indexes.spi.IndexManager;
import org.hibernate.search.spi.WorkerBuildContext;
import org.hibernate.search.util.impl.Executors;
import org.hibernate.search.util.logging.impl.Log;
Expand All @@ -40,6 +41,7 @@ public final class LuceneBackendResources {
private final ErrorHandler errorHandler;
private final int maxQueueLength;
private final String indexName;
private final IndexManager indexManager;

private final ReadLock readLock;
private final WriteLock writeLock;
Expand All @@ -48,6 +50,7 @@ public final class LuceneBackendResources {

LuceneBackendResources(WorkerBuildContext context, DirectoryBasedIndexManager indexManager, Properties props, AbstractWorkspaceImpl workspace) {
this.indexName = indexManager.getIndexName();
this.indexManager = indexManager;
this.errorHandler = context.getErrorHandler();
this.workspace = workspace;
this.maxQueueLength = PropertiesParseHelper.extractMaxQueueSize( indexName, props );
Expand All @@ -57,6 +60,7 @@ public final class LuceneBackendResources {
}

private LuceneBackendResources(LuceneBackendResources previous) {
this.indexManager = previous.indexManager;
this.indexName = previous.indexName;
this.errorHandler = previous.errorHandler;
this.workspace = previous.workspace;
Expand Down Expand Up @@ -95,6 +99,10 @@ public String getIndexName() {
return indexName;
}

public IndexManager getIndexManager() {
return indexManager;
}

public IndexWorkVisitor<Void, LuceneWorkExecutor> getWorkVisitor() {
if ( workVisitor == null ) {
workVisitor = new IndexUpdateVisitor( workspace );
Expand Down
Expand Up @@ -9,6 +9,7 @@
import java.util.List;

import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.indexes.spi.IndexManager;

/**
* @author Amin Mohammed-Coleman
Expand All @@ -24,4 +25,6 @@ public interface ErrorContext {

boolean hasErrors();

IndexManager getIndexManager();

}
Expand Up @@ -12,6 +12,7 @@

import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.exception.ErrorContext;
import org.hibernate.search.indexes.spi.IndexManager;

/**
* @author Amin Mohammed-Coleman
Expand All @@ -23,6 +24,7 @@ public class ErrorContextBuilder {
private Iterable<LuceneWork> workToBeDone;
private List<LuceneWork> failingOperations;
private List<LuceneWork> operationsThatWorked;
private IndexManager indexManager;

public ErrorContextBuilder errorThatOccurred(Throwable th) {
this.th = th;
Expand All @@ -45,6 +47,11 @@ public ErrorContextBuilder workCompleted(LuceneWork luceneWork) {

}

public ErrorContextBuilder indexManager(IndexManager indexName) {
this.indexManager = indexName;
return this;
}

public ErrorContextBuilder allWorkToBeDone(Iterable<LuceneWork> workOnWriter) {
this.workToBeDone = workOnWriter;
return this;
Expand All @@ -71,6 +78,7 @@ public ErrorContext createErrorContext() {
}
}
context.setFailingOperations( getFailingOperations() );
context.setIndexManager( indexManager );
return context;
}

Expand Down
Expand Up @@ -11,6 +11,7 @@

import org.hibernate.search.backend.LuceneWork;
import org.hibernate.search.exception.ErrorContext;
import org.hibernate.search.indexes.spi.IndexManager;

/**
* @author Amin Mohammed-Coleman
Expand All @@ -24,6 +25,8 @@ class ErrorContextImpl implements ErrorContext {

private Throwable throwable;

private IndexManager indexManager;

@Override
public List<LuceneWork> getFailingOperations() {
if ( failingOperations == null ) {
Expand Down Expand Up @@ -59,4 +62,13 @@ public boolean hasErrors() {
return failingOperations != null && failingOperations.size() > 0;
}

@Override
public IndexManager getIndexManager() {
return indexManager;
}

public void setIndexManager(IndexManager indexManager) {
this.indexManager = indexManager;
}

}
Expand Up @@ -87,6 +87,7 @@ public void testErrorHandling() {
Assert.assertEquals( expectedErrorMessage.toString() , errorMessage );
Assert.assertTrue( exception instanceof SearchException );
Assert.assertEquals( "failed work message", exception.getMessage() );
Assert.assertEquals( indexManager, mockErrorHandler.getIndexManager() );
}

private MockErrorHandler getErrorHandlerAndAssertCorrectTypeIsUsed() {
Expand Down
Expand Up @@ -6,7 +6,9 @@
*/
package org.hibernate.search.test.errorhandling;

import org.hibernate.search.exception.ErrorContext;
import org.hibernate.search.exception.impl.LogErrorHandler;
import org.hibernate.search.indexes.spi.IndexManager;

/**
* This is a LogErrorHandler used for testing only,
Expand All @@ -20,6 +22,13 @@ public class MockErrorHandler extends LogErrorHandler {

private volatile String errorMessage;
private volatile Throwable lastException;
private IndexManager indexManager;

@Override
public void handle(ErrorContext context) {
indexManager = context.getIndexManager();
super.handle( context );
}

@Override
public void handleException(String errorMsg, Throwable exceptionThatOccurred) {
Expand All @@ -35,4 +44,8 @@ public Throwable getLastException() {
return lastException;
}

public IndexManager getIndexManager() {
return indexManager;
}

}

0 comments on commit c590830

Please sign in to comment.