Skip to content

Commit ccd3dfa

Browse files
committed
enable docker support
1 parent 51234d8 commit ccd3dfa

File tree

8 files changed

+66
-51
lines changed

8 files changed

+66
-51
lines changed

Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM adoptopenjdk/openjdk8
2+
3+
ARG VERSION
4+
5+
EXPOSE 32311
6+
EXPOSE 9990
7+
EXPOSE 5005
8+
9+
RUN apt-get update && apt-get autoclean && apt-get autoremove && apt-get install vim jq -y
10+
ENV BROOKLIN_TAR_FILE brooklin-${VERSION}.tgz
11+
12+
COPY ${BROOKLIN_TAR_FILE} /opt/app/
13+
RUN tar -zxf /opt/app/${BROOKLIN_TAR_FILE} --directory=/opt/app && mv /opt/app/brooklin-${VERSION} /opt/app/brooklin
14+
WORKDIR /opt/app/brooklin
15+
16+
ENTRYPOINT ["/opt/app/brooklin/bin/brooklin-server-start.sh", "/opt/app/brooklin/config/server.properties"]

build.gradle

Lines changed: 13 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@ apply from: file('gradle/environment.gradle')
33
apply from: file("gradle/dependency-versions.gradle")
44
apply from: file("gradle/install-git-hooks.gradle")
55

6+
apply plugin: 'com.palantir.docker'
7+
68
buildscript {
79
repositories {
810
mavenCentral()
911
}
12+
dependencies {
13+
classpath "com.palantir.docker:com.palantir.docker.gradle.plugin:0.26.0"
14+
}
1015
apply from: file('gradle/buildscript.gradle'), to: buildscript
1116
}
1217

@@ -18,7 +23,6 @@ allprojects {
1823
apply plugin: 'project-report'
1924
apply plugin: 'checkstyle'
2025
apply plugin: 'findbugs'
21-
2226
repositories {
2327
mavenCentral()
2428
jcenter()
@@ -44,6 +48,14 @@ idea {
4448
}
4549
}
4650

51+
docker {
52+
name 'brooklin'
53+
tags 'latest' // deprecated, use 'tag'
54+
dockerfile file('Dockerfile')
55+
files file("${project.rootDir}/datastream-tools/build/distributions/${rootProject.name}-${rootProject.version}.tgz")
56+
buildArgs([VERSION: rootProject.version])
57+
}
58+
4759
subprojects {
4860
apply plugin: 'java'
4961
apply plugin: 'pegasus'
@@ -396,39 +408,6 @@ project(':datastream-tools') {
396408
duplicatesStrategy 'exclude'
397409
}
398410

399-
tasks.create(name: "copyLibs", group: "distribution", dependsOn: configurations.archives.artifacts, type: Copy) {
400-
description = "Copy libs to debug folder"
401-
402-
// debugLibDir is supposed to provide as a cli parameter
403-
// e.g. ./gradlew build -x test -x check -x licenseMain copyLibs
404-
405-
into "${debugLibDir}/libs/"
406-
from configurations.archives.artifacts.files,
407-
project(':datastream-bigquery').jar,
408-
project(':datastream-bigquery').configurations.runtime,
409-
project(':datastream-cloud-storage').jar,
410-
project(':datastream-cloud-storage').configurations.runtime,
411-
project(':datastream-tools').jar,
412-
project(':datastream-tools').configurations.runtime,
413-
project(':datastream-server').jar,
414-
project(':datastream-server').configurations.runtime,
415-
project(':datastream-file-connector').jar,
416-
project(':datastream-file-connector').configurations.runtime,
417-
project(':datastream-jdbc-connector').jar,
418-
project(':datastream-jdbc-connector').configurations.runtime,
419-
project(':datastream-directory').jar,
420-
project(':datastream-directory').configurations.runtime,
421-
project(':datastream-testcommon').jar,
422-
project(':datastream-testcommon').configurations.runtime,
423-
project(':datastream-common').jar,
424-
project(':datastream-common').configurations.runtime,
425-
project(':datastream-kafka').jar,
426-
project(':datastream-kafka').configurations.runtime,
427-
project(':datastream-kafka-connector').jar,
428-
project(':datastream-kafka-connector').configurations.runtime
429-
430-
duplicatesStrategy 'exclude'
431-
}
432411
tasks.create(name: "copyDependentLibs", type: Copy) {
433412
from (configurations.runtime) {
434413
}

datastream-jdbc-connector/src/main/java/com/linkedin/datastream/connectors/jdbc/JDBCConnector.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,12 @@ public JDBCConnector(VerifiableProperties config) {
9595
_checkpointStoreTopic = config.getProperty(CONFIG_CHECKPOINT_STORE_TOPIC);
9696

9797
_jdbcUser = config.getString(CONFIG_JDBC_USER);
98-
_jdbcUserPassword = "P@ssw0rd";
99-
// try {
100-
// _jdbcUserPassword = Passwords.get(config.getString(CONFIG_JDBC_CREDENTIAL_NAME));
101-
// } catch (IOException e) {
102-
// _logger.error("Unable to decrypt password.");
103-
// throw new RuntimeException(e);
104-
// }
98+
try {
99+
_jdbcUserPassword = Passwords.get(config.getString(CONFIG_JDBC_CREDENTIAL_NAME));
100+
} catch (IOException e) {
101+
_logger.error("Unable to decrypt password.");
102+
throw new RuntimeException(e);
103+
}
105104

106105
_cpMinIdle = config.getInt(CONFIG_CP_MIN_IDLE, 1);
107106
_cpMaxIdle = config.getInt(CONFIG_CP_MAX_IDLE, 5);

datastream-jdbc-connector/src/main/java/com/linkedin/datastream/connectors/jdbc/JDBCConnectorTask.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import javax.sql.DataSource;
2121

2222
import org.apache.avro.generic.GenericRecord;
23+
import org.apache.commons.lang3.StringUtils;
2324
import org.slf4j.Logger;
2425
import org.slf4j.LoggerFactory;
2526

@@ -142,9 +143,17 @@ private Long getInitialCheckpoint() {
142143

143144
private String generateStatement() {
144145
String suffix = " WHERE " + _incrementingColumnName + " > ? ORDER BY " + _incrementingColumnName + " ASC";
145-
return (_query != null) ?
146-
_query + suffix :
147-
"SELECT * FROM " + _table + " WITH (NOLOCK)" + suffix;
146+
if (StringUtils.isNotBlank(_query)) {
147+
// Assume the query is complete if it has `where`
148+
if (_query.toUpperCase().contains("WHERE")) {
149+
return _query;
150+
}
151+
return _query + suffix;
152+
}
153+
if (StringUtils.isBlank(_table)) {
154+
throw new IllegalArgumentException("table name cannot be empty!");
155+
}
156+
return "SELECT * FROM " + _table + " WITH (NOLOCK)" + suffix;
148157
}
149158

150159
private void poll() {

datastream-server/src/main/java/com/linkedin/datastream/server/providers/KafkaCustomCheckpointProvider.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,6 @@ public KafkaCustomCheckpointProvider(String taskId,
9393
topicConfig.put("delete.retention.ms", "3600000");
9494
NewTopic newTopic = new NewTopic(topic, 1, (short) 1).configs(topicConfig);
9595

96-
Random rand = new Random();
97-
int test = rand.nextInt(3);
98-
if (test == 1) {
99-
throw new InterruptedException("purposely throw an exception for testing");
100-
}
10196
CreateTopicsResult result = adminClient.createTopics(Collections.singletonList(newTopic));
10297
result.values().get(topic).get();
10398
} catch (InterruptedException e) {

docker-build.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env bash
2+
3+
docker build --build-arg VERSION=1.0.2-21-SNAPSHOT -t brooklin .

docker-compose.yaml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
version: '3'
2+
services:
3+
brooklin:
4+
image: brooklin
5+
environment:
6+
JVM_OPTS: "-Xms1024M -Xmx2048M"
7+
LOG4J_OPTS: "-Dlog4j.configuration=file:/opt/app/brooklin/config/log4j.properties"
8+
JMX_PORT: "9990"
9+
DEBUG_OPTS: "-agentlib:jdwp=transport=dt_socket,server=y,suspend=${DEBUG_SUSPEND:-n},address=5005"
10+
volumes:
11+
- /Users/mg699v/Work/gary-mguo/brooklin-utils/scripts/config:/opt/app/brooklin/config
12+
ports:
13+
- "32311:32311"
14+
- "5005:5005"
15+
- "9990:9990"

scripts/brooklin-server-start.sh

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,7 @@ if [ "x$HEAP_OPTS" = "x" ]; then
1616
fi
1717

1818
# Add the optional debug params, useful for development
19-
DEBUG_PARAMS=${DEBUG_PARAMS:-}
20-
EXTRA_ARGS="-name brooklin -loggc ${DEBUG_PARAMS} "
19+
EXTRA_ARGS="-name brooklin -loggc ${DEBUG_OPTS} "
2120

2221
COMMAND=$1
2322
case $COMMAND in

0 commit comments

Comments
 (0)