Skip to content

Commit

Permalink
Implemented a better way of passing options to the asynchronous inges…
Browse files Browse the repository at this point in the history
…t queue (ref #4865)
  • Loading branch information
landreev committed Aug 1, 2018
1 parent 769dbb7 commit c543db3
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 20 deletions.
14 changes: 14 additions & 0 deletions src/main/java/edu/harvard/iq/dataverse/api/Files.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
import edu.harvard.iq.dataverse.engine.command.impl.UningestFileCommand;
import edu.harvard.iq.dataverse.export.ExportException;
import edu.harvard.iq.dataverse.export.ExportService;
import edu.harvard.iq.dataverse.ingest.IngestRequest;
import edu.harvard.iq.dataverse.ingest.IngestServiceBean;
import edu.harvard.iq.dataverse.settings.SettingsServiceBean;
import edu.harvard.iq.dataverse.util.BundleUtil;
Expand Down Expand Up @@ -387,6 +388,19 @@ public Response reingest(@PathParam("id") String id) {

dataFile.SetIngestScheduled();

IngestRequest ingestRequest = dataFile.getIngestRequest();

if (ingestRequest == null) {
ingestRequest = new IngestRequest();
ingestRequest.setDataFile(dataFile);
dataFile.setIngestRequest(ingestRequest);
}

dataFile.getIngestRequest().setForceTypeCheck(true);

// update the datafile, to save the newIngest request in the database:
dataFile = fileService.save(dataFile);

// queue the data ingest job for asynchronous execution:
String status = ingestService.startIngestJobForSingleFile(dataFile, u);

Expand Down
12 changes: 0 additions & 12 deletions src/main/java/edu/harvard/iq/dataverse/ingest/IngestMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ public IngestMessage(int messageLevel) {
private String versionNote;
private String datasetVersionNumber;
private List<Long> datafile_ids;
private Boolean forceTypeCheck;

public String getVersionNote() {
return versionNote;
Expand Down Expand Up @@ -113,15 +112,4 @@ public void setFileIds(List<Long> file_ids) {
public void addFileId(Long file_id) {
datafile_ids.add(file_id);
}

public void setForceTypeCheck(boolean forceTypeCheck) {
this.forceTypeCheck = forceTypeCheck;
}

public boolean isForceTypeCheck() {
if (forceTypeCheck != null) {
return forceTypeCheck;
}
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void onMessage(Message message) {

logger.fine("Start ingest job;");
try {
if (ingestService.ingestAsTabular(datafile_id, ingestMessage.isForceTypeCheck())) {
if (ingestService.ingestAsTabular(datafile_id)) {
//Thread.sleep(10000);
logger.fine("Finished ingest job;");
} else {
Expand Down
16 changes: 13 additions & 3 deletions src/main/java/edu/harvard/iq/dataverse/ingest/IngestRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,6 @@ public void setId(Long id) {
this.id = id;
}

//@ManyToOne
//@JoinColumn(nullable=false)

@OneToOne(cascade={CascadeType.MERGE,CascadeType.PERSIST})
@JoinColumn(name="datafile_id")
private DataFile dataFile;
Expand All @@ -51,6 +48,8 @@ public void setId(Long id) {

private String labelsFile;

private Boolean forceTypeCheck;

public DataFile getDataFile() {
return dataFile;
}
Expand Down Expand Up @@ -83,6 +82,17 @@ public void setLabelsFile(String labelsFile) {
this.labelsFile = labelsFile;
}

public void setForceTypeCheck(boolean forceTypeCheck) {
this.forceTypeCheck = forceTypeCheck;
}

public boolean isForceTypeCheck() {
if (forceTypeCheck != null) {
return forceTypeCheck;
}
return false;
}

@Override
public int hashCode() {
int hash = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -545,7 +545,6 @@ public String startIngestJobForSingleFile(DataFile dataFile, AuthenticatedUser u
ingestMessage = new IngestMessage(IngestMessage.INGEST_MESAGE_LEVEL_INFO);

ingestMessage.addFileId(dataFile.getId());
ingestMessage.setForceTypeCheck(true);

QueueConnection conn = null;
QueueSession session = null;
Expand Down Expand Up @@ -730,16 +729,22 @@ public void sendFailNotification(Long dataset_id) {
}


public boolean ingestAsTabular(Long datafile_id, boolean forceTypeCheck) {
public boolean ingestAsTabular(Long datafile_id) {
DataFile dataFile = fileService.find(datafile_id);
boolean ingestSuccessful = false;
boolean forceTypeCheck = false;

IngestRequest ingestRequest = dataFile.getIngestRequest();
if (ingestRequest != null) {
forceTypeCheck = ingestRequest.isForceTypeCheck();
}

// Locate ingest plugin for the file format by looking
// it up with the Ingest Service Provider Registry:
String fileName = dataFile.getFileMetadata().getLabel();
TabularDataFileReader ingestPlugin = getTabDataReaderByMimeType(dataFile.getContentType());
logger.fine("Using ingest plugin " + ingestPlugin.getClass());

if (!forceTypeCheck && ingestPlugin == null) {
// If this is a reingest request, we'll still have a chance
// to find an ingest plugin for this file, once we try
Expand Down Expand Up @@ -784,7 +789,6 @@ public boolean ingestAsTabular(Long datafile_id, boolean forceTypeCheck) {
return false;
}

IngestRequest ingestRequest = dataFile.getIngestRequest();
if (ingestRequest != null) {
if (ingestRequest.getTextEncoding() != null
&& !ingestRequest.getTextEncoding().equals("") ) {
Expand Down

0 comments on commit c543db3

Please sign in to comment.