summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Musum <musum@verizonmedia.com>2020-10-30 08:10:14 +0100
committerHarald Musum <musum@verizonmedia.com>2020-10-30 08:10:14 +0100
commitb77c3579a9d0216fda679a84adcc0e9c1757ba2c (patch)
tree295a494ba216fda22014605ffb54e5af35eecdff
parent6b10fcfe98b9dbcfb80974224006e0cd6d73536f (diff)
Log more when preprocessing fails
-rw-r--r--application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java10
-rw-r--r--config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java30
-rw-r--r--config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java5
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java6
-rw-r--r--configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java2
5 files changed, 24 insertions, 29 deletions
diff --git a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
index 3ee926dd124..1988c8a2fff 100644
--- a/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
+++ b/application-preprocessor/src/main/java/com/yahoo/application/preprocessor/ApplicationPreprocessor.java
@@ -5,12 +5,11 @@ import com.yahoo.config.application.api.ApplicationPackage;
import com.yahoo.config.application.api.DeployLogger;
import com.yahoo.config.model.application.provider.BaseDeployLogger;
import com.yahoo.config.model.application.provider.FilesApplicationPackage;
-import com.yahoo.config.provision.*;
+import com.yahoo.config.provision.Environment;
+import com.yahoo.config.provision.RegionName;
+import com.yahoo.config.provision.Zone;
import com.yahoo.yolean.Exceptions;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
import java.util.Optional;
@@ -34,7 +33,7 @@ public class ApplicationPreprocessor {
this.region = region;
}
- public void run() throws IOException, TransformerException, ParserConfigurationException, SAXException {
+ public void run() throws IOException {
DeployLogger logger = new BaseDeployLogger();
FilesApplicationPackage.Builder applicationPackageBuilder = new FilesApplicationPackage.Builder(applicationDir);
outputDir.ifPresent(applicationPackageBuilder::preprocessedDir);
@@ -44,7 +43,6 @@ public class ApplicationPreprocessor {
preprocessed.validateXML();
}
-
public static void main(String args[]) {
int argCount = args.length;
if (argCount < 1) {
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
index 6aa8f8bf1a1..1bdedc503bf 100644
--- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
+++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java
@@ -1,4 +1,4 @@
-// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.config.model.application.provider;
import com.yahoo.component.Version;
@@ -601,28 +601,32 @@ public class FilesApplicationPackage implements ApplicationPackage {
return searchDefinitionContents();
}
- private void preprocessXML(File destination, File inputXml, Zone zone) throws ParserConfigurationException, TransformerException, SAXException, IOException {
- Document document = new XmlPreProcessor(appDir,
- inputXml,
- metaData.getApplicationId().instance(),
- zone.environment(),
- zone.region()).run();
- Transformer transformer = TransformerFactory.newInstance().newTransformer();
- try (FileOutputStream outputStream = new FileOutputStream(destination)) {
- transformer.transform(new DOMSource(document), new StreamResult(outputStream));
+ private void preprocessXML(File destination, File inputXml, Zone zone) throws IOException {
+ if ( ! inputXml.exists()) return;
+ try {
+ Document document = new XmlPreProcessor(appDir,
+ inputXml,
+ metaData.getApplicationId().instance(),
+ zone.environment(),
+ zone.region()).run();
+ Transformer transformer = TransformerFactory.newInstance().newTransformer();
+ try (FileOutputStream outputStream = new FileOutputStream(destination)) {
+ transformer.transform(new DOMSource(document), new StreamResult(outputStream));
+ }
+ } catch (TransformerException |ParserConfigurationException | SAXException e) {
+ throw new RuntimeException("Error preprocessing " + inputXml.getAbsolutePath() + ": " + e.getMessage(), e);
}
}
@Override
- public ApplicationPackage preprocess(Zone zone, DeployLogger logger) throws IOException, TransformerException, ParserConfigurationException, SAXException {
+ public ApplicationPackage preprocess(Zone zone, DeployLogger logger) throws IOException {
IOUtils.recursiveDeleteDir(preprocessedDir);
IOUtils.copyDirectory(appDir, preprocessedDir, -1, (dir, name) -> ! name.equals(preprocessed) &&
! name.equals(SERVICES) &&
! name.equals(HOSTS) &&
! name.equals(CONFIG_DEFINITIONS_DIR));
preprocessXML(new File(preprocessedDir, SERVICES), getServicesFile(), zone);
- if (getHostsFile().exists())
- preprocessXML(new File(preprocessedDir, HOSTS), getHostsFile(), zone);
+ preprocessXML(new File(preprocessedDir, HOSTS), getHostsFile(), zone);
FilesApplicationPackage preprocessed = FilesApplicationPackage.fromFile(preprocessedDir, includeSourceFiles);
preprocessed.copyUserDefsIntoApplication();
return preprocessed;
diff --git a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
index be4d8fdab25..dcc75fff540 100644
--- a/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
+++ b/config-application-package/src/test/java/com/yahoo/config/model/application/provider/FilesApplicationPackageTest.java
@@ -10,10 +10,7 @@ import com.yahoo.io.IOUtils;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
@@ -32,7 +29,7 @@ public class FilesApplicationPackageTest {
public TemporaryFolder temporaryFolder = new TemporaryFolder();
@Test
- public void testPreprocessing() throws IOException, TransformerException, ParserConfigurationException, SAXException {
+ public void testPreprocessing() throws IOException {
File appDir = temporaryFolder.newFolder();
IOUtils.copyDirectory(new File("src/test/resources/multienvapp"), appDir);
assertTrue(new File(appDir, "services.xml").exists());
diff --git a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
index b6f030fab52..bf6012cf04d 100644
--- a/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
+++ b/config-model-api/src/main/java/com/yahoo/config/application/api/ApplicationPackage.java
@@ -10,10 +10,7 @@ import com.yahoo.path.Path;
import com.yahoo.text.XML;
import com.yahoo.vespa.config.ConfigDefinitionKey;
import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
import java.io.Reader;
@@ -250,8 +247,7 @@ public interface ApplicationPackage {
*
* @return A new application package instance pointing to a new location
*/
- default ApplicationPackage preprocess(Zone zone, DeployLogger logger)
- throws IOException, TransformerException, ParserConfigurationException, SAXException {
+ default ApplicationPackage preprocess(Zone zone, DeployLogger logger) throws IOException {
throw new UnsupportedOperationException("This application package does not support preprocessing");
}
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
index f54343f2dc1..135050d8739 100644
--- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
+++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java
@@ -254,7 +254,7 @@ public class SessionPreparer {
void preprocess() {
try {
this.preprocessedApplicationPackage = applicationPackage.preprocess(properties.zone(), logger);
- } catch (IOException | TransformerException | ParserConfigurationException | SAXException e) {
+ } catch (IOException e) {
throw new IllegalArgumentException("Error preprocessing application package for " + applicationId, e);
}
checkTimeout("preprocess");