diff --git a/pdb-ui/build.gradle b/pdb-ui/build.gradle index 3bdcb4d..02e4ac5 100644 --- a/pdb-ui/build.gradle +++ b/pdb-ui/build.gradle @@ -3,6 +3,11 @@ apply plugin: 'application' mainClassName = "org.lucares.pdbui.PdbWebapp" +applicationDefaultJvmArgs = [ + "-Dspring.profiles.active=production", + "-Dspring.config.location=.", + "-Ddb.base=data" + ] dependencies { compile project(':performanceDb') @@ -14,4 +19,8 @@ dependencies { compile("org.springframework.boot:spring-boot-starter-log4j2:1.5.2.RELEASE") testCompile("org.springframework.boot:spring-boot-starter-test:1.5.2.RELEASE") +} + +jar { + exclude 'application-dev.properties' } \ No newline at end of file diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/Ingestion.java b/pdb-ui/src/main/java/org/lucares/pdbui/Ingestion.java new file mode 100644 index 0000000..08bc4bc --- /dev/null +++ b/pdb-ui/src/main/java/org/lucares/pdbui/Ingestion.java @@ -0,0 +1,21 @@ +package org.lucares.pdbui; + +import javax.annotation.PostConstruct; + +import org.springframework.stereotype.Component; + +@Component +public class Ingestion { + + private final Ingestor tcpIngestor; + + public Ingestion(final Ingestor tcpIngestor) { + this.tcpIngestor = tcpIngestor; + } + + @PostConstruct + public void start() throws Exception { + tcpIngestor.start(); + } + +} diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/Ingestor.java b/pdb-ui/src/main/java/org/lucares/pdbui/Ingestor.java new file mode 100644 index 0000000..f6577c3 --- /dev/null +++ b/pdb-ui/src/main/java/org/lucares/pdbui/Ingestor.java @@ -0,0 +1,7 @@ +package org.lucares.pdbui; + +public interface Ingestor { + + void start() throws Exception; + +} diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/MySpringConfiguration.java b/pdb-ui/src/main/java/org/lucares/pdbui/MySpringConfiguration.java index 445de46..bd764da 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/MySpringConfiguration.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/MySpringConfiguration.java @@ -2,12 +2,11 @@ package org.lucares.pdbui; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; +import org.springframework.scheduling.annotation.EnableAsync; @Configuration +@EnableAsync @ComponentScan("org.lucares.pdbui") -@PropertySource("classpath:/config.system.properties") -@PropertySource("classpath:/config.user.properties") public class MySpringConfiguration { } diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/PdbRepository.java b/pdb-ui/src/main/java/org/lucares/pdbui/PdbRepository.java index bc50194..a7b927e 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/PdbRepository.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/PdbRepository.java @@ -6,16 +6,23 @@ import java.util.List; import org.lucares.ludb.Proposal; import org.lucares.performance.db.PerformanceDb; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.DisposableBean; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Repository; @Repository public class PdbRepository implements DisposableBean { + private static final Logger LOGGER = LoggerFactory.getLogger(PdbRepository.class); + private final PerformanceDb db; public PdbRepository(@Value("${db.base}") final String dbBaseDir) { final Path dataDirectory = Paths.get(dbBaseDir); + + LOGGER.info("using database in {}", dataDirectory.toAbsolutePath()); + this.db = new PerformanceDb(dataDirectory); } diff --git a/pdb-plotting/src/main/java/org/lucares/recommind/logs/TcpIngestor.java b/pdb-ui/src/main/java/org/lucares/pdbui/TcpIngestor.java similarity index 91% rename from pdb-plotting/src/main/java/org/lucares/recommind/logs/TcpIngestor.java rename to pdb-ui/src/main/java/org/lucares/pdbui/TcpIngestor.java index ae969cb..ca2e293 100644 --- a/pdb-plotting/src/main/java/org/lucares/recommind/logs/TcpIngestor.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/TcpIngestor.java @@ -1,4 +1,4 @@ -package org.lucares.recommind.logs; +package org.lucares.pdbui; import java.io.BufferedReader; import java.io.IOException; @@ -20,19 +20,27 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; +import javax.annotation.PreDestroy; + import org.lucares.pdb.api.Entry; import org.lucares.pdb.api.Tags; import org.lucares.performance.db.BlockingQueueIterator; import org.lucares.performance.db.PerformanceDb; +import org.lucares.recommind.logs.Config; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.DisposableBean; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Component; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.MappingIterator; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectReader; -public class TcpIngestor implements AutoCloseable { +@Component +public class TcpIngestor implements Ingestor, AutoCloseable, DisposableBean { private static final Logger LOGGER = LoggerFactory.getLogger(TcpIngestor.class); private static final Logger METRICS_LOGGER = LoggerFactory.getLogger("org.lucares.metrics.tcpIngestor"); @@ -158,6 +166,13 @@ public class TcpIngestor implements AutoCloseable { LOGGER.debug("performance db open"); } + @Autowired + public TcpIngestor(final PdbRepository pdbRepository) { + db = pdbRepository.getDb(); + } + + @Async + @Override public void start() throws Exception { final ArrayBlockingQueue queue = new ArrayBlockingQueue<>(1); @@ -182,8 +197,7 @@ public class TcpIngestor implements AutoCloseable { private Void listen(final ArrayBlockingQueue queue) throws IOException { Thread.currentThread().setName("socket-listener"); - try (ServerSocket serverSocket = new ServerSocket( - PORT/* , 10, InetAddress.getLocalHost() */);) { + try (ServerSocket serverSocket = new ServerSocket(PORT);) { LOGGER.info("listening on port " + PORT); serverSocket.setSoTimeout((int) TimeUnit.MILLISECONDS.toMillis(100)); @@ -226,6 +240,12 @@ public class TcpIngestor implements AutoCloseable { return null; } + @Override + @PreDestroy + public void destroy() { + close(); + } + @Override public void close() { LOGGER.debug("stopping accept thread"); @@ -238,7 +258,7 @@ public class TcpIngestor implements AutoCloseable { } LOGGER.debug("closing database"); db.close(); - LOGGER.debug("close done"); + LOGGER.info("destroyed"); } public static void main(final String[] args) throws Exception { diff --git a/pdb-ui/src/main/resources/application-dev.properties b/pdb-ui/src/main/resources/application-dev.properties new file mode 100644 index 0000000..8a64cf7 --- /dev/null +++ b/pdb-ui/src/main/resources/application-dev.properties @@ -0,0 +1 @@ +db.base=/home/andi/ws/performanceDb/db diff --git a/pdb-ui/src/main/resources/application.properties b/pdb-ui/src/main/resources/application.properties new file mode 100644 index 0000000..38874b7 --- /dev/null +++ b/pdb-ui/src/main/resources/application.properties @@ -0,0 +1,4 @@ +db.base=${java.io.tmpdir}/db + +path.tmp=${java.io.tmpdir}/pdb/tmp +path.output=${java.io.tmpdir}/pdb/out \ No newline at end of file diff --git a/pdb-ui/src/main/resources/config.system.properties b/pdb-ui/src/main/resources/config.system.properties deleted file mode 100644 index 34bc0a3..0000000 --- a/pdb-ui/src/main/resources/config.system.properties +++ /dev/null @@ -1,4 +0,0 @@ -db.base=/tmp/db - -path.tmp=/tmp/pdb/tmp -path.output=/tmp/pdb/out \ No newline at end of file diff --git a/pdb-plotting/src/test/java/org/lucares/performance/db/ingestor/TcpIngestorTest.java b/pdb-ui/src/test/java/org/lucares/performance/db/ingestor/TcpIngestorTest.java similarity index 99% rename from pdb-plotting/src/test/java/org/lucares/performance/db/ingestor/TcpIngestorTest.java rename to pdb-ui/src/test/java/org/lucares/performance/db/ingestor/TcpIngestorTest.java index f92e7d4..8ce5b16 100644 --- a/pdb-plotting/src/test/java/org/lucares/performance/db/ingestor/TcpIngestorTest.java +++ b/pdb-ui/src/test/java/org/lucares/performance/db/ingestor/TcpIngestorTest.java @@ -19,9 +19,9 @@ import java.util.Map; import java.util.concurrent.TimeUnit; import org.lucares.pdb.api.Entry; +import org.lucares.pdbui.TcpIngestor; import org.lucares.performance.db.FileUtils; import org.lucares.performance.db.PerformanceDb; -import org.lucares.recommind.logs.TcpIngestor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.testng.Assert;