@@ -94,13 +94,16 @@ public static void copyConnectorJarToContainer(
94
94
Set <String > connectorNames = getConnectors (jobConfig , connectors , "source" );
95
95
connectorNames .addAll (getConnectors (jobConfig , connectors , "sink" ));
96
96
File module = new File (PROJECT_ROOT_PATH + File .separator + connectorsRootPath );
97
-
98
97
List <File > connectorFiles = getConnectorFiles (module , connectorNames , connectorPrefix );
99
- connectorFiles .forEach (
100
- jar ->
101
- container .copyFileToContainer (
102
- MountableFile .forHostPath (jar .getAbsolutePath ()),
103
- Paths .get (seatunnelHome , "connectors" , jar .getName ()).toString ()));
98
+ List <String > jars = getAlreadyInContainerConnectors (container , seatunnelHome );
99
+ connectorFiles .stream ()
100
+ .filter (jar -> !jars .contains (jar .getName ()))
101
+ .forEach (
102
+ jar ->
103
+ container .copyFileToContainer (
104
+ MountableFile .forHostPath (jar .getAbsolutePath ()),
105
+ Paths .get (seatunnelHome , "connectors" , jar .getName ())
106
+ .toString ()));
104
107
}
105
108
106
109
public static void copyAllConnectorJarToContainer (
@@ -126,11 +129,15 @@ public static void copyAllConnectorJarToContainer(
126
129
connectors .getConfig (pluginType .getType ()))));
127
130
File module = new File (PROJECT_ROOT_PATH + File .separator + connectorsRootPath );
128
131
List <File > connectorFiles = getConnectorFiles (module , connectorNames , connectorPrefix );
129
- connectorFiles .forEach (
130
- jar ->
131
- container .copyFileToContainer (
132
- MountableFile .forHostPath (jar .getAbsolutePath ()),
133
- Paths .get (seatunnelHome , "connectors" , jar .getName ()).toString ()));
132
+ List <String > jars = getAlreadyInContainerConnectors (container , seatunnelHome );
133
+ connectorFiles .stream ()
134
+ .filter (jar -> !jars .contains (jar .getName ()))
135
+ .forEach (
136
+ jar ->
137
+ container .copyFileToContainer (
138
+ MountableFile .forHostPath (jar .getAbsolutePath ()),
139
+ Paths .get (seatunnelHome , "connectors" , jar .getName ())
140
+ .toString ()));
134
141
}
135
142
136
143
public static Set <String > getConnectorNames (Config config ) {
@@ -155,6 +162,19 @@ public static Set<String> getConnectorIdentifier(String connectorType, String pl
155
162
return treeSet ;
156
163
}
157
164
165
+ private static List <String > getAlreadyInContainerConnectors (
166
+ GenericContainer <?> container , String seatunnelHome ) {
167
+ try {
168
+ Container .ExecResult execResult =
169
+ container .execInContainer (
170
+ "ls" , Paths .get (seatunnelHome , "connectors" ).toString ());
171
+ String result = execResult .getStdout ();
172
+ return Arrays .stream (result .split ("\n " )).collect (Collectors .toList ());
173
+ } catch (Exception e ) {
174
+ throw new RuntimeException (e );
175
+ }
176
+ }
177
+
158
178
public static String copyConfigFileToContainer (GenericContainer <?> container , String confFile ) {
159
179
final String targetConfInContainer = Paths .get ("/tmp" , confFile ).toString ();
160
180
container .copyFileToContainer (
0 commit comments