diff --git a/hoodie-client/src/main/java/com/uber/hoodie/client/embedded/EmbeddedTimelineService.java b/hoodie-client/src/main/java/com/uber/hoodie/client/embedded/EmbeddedTimelineService.java index fbd54c92f..4c0539a54 100644 --- a/hoodie-client/src/main/java/com/uber/hoodie/client/embedded/EmbeddedTimelineService.java +++ b/hoodie-client/src/main/java/com/uber/hoodie/client/embedded/EmbeddedTimelineService.java @@ -68,7 +68,7 @@ public class EmbeddedTimelineService { } public void startServer() throws IOException { - server = new TimelineService(0, viewManager); + server = new TimelineService(0, viewManager, hadoopConf.get()); serverPort = server.startService(); logger.info("Started embedded timeline server at " + hostAddr + ":" + serverPort); } diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/SerializableConfiguration.java b/hoodie-common/src/main/java/com/uber/hoodie/common/SerializableConfiguration.java index b66e6de6c..04732e28c 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/SerializableConfiguration.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/SerializableConfiguration.java @@ -29,11 +29,15 @@ public class SerializableConfiguration implements Serializable { private transient Configuration configuration; public SerializableConfiguration(Configuration configuration) { - this.configuration = configuration; + this.configuration = new Configuration(configuration); + } + + public SerializableConfiguration(SerializableConfiguration configuration) { + this.configuration = configuration.get(); } public Configuration get() { - return configuration; + return new Configuration(configuration); } private void writeObject(ObjectOutputStream out) throws IOException { diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/table/HoodieTableMetaClient.java b/hoodie-common/src/main/java/com/uber/hoodie/common/table/HoodieTableMetaClient.java index 755174801..c8dd7d26b 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/table/HoodieTableMetaClient.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/table/HoodieTableMetaClient.java @@ -85,7 +85,7 @@ public class HoodieTableMetaClient implements Serializable { throws DatasetNotFoundException { log.info("Loading HoodieTableMetaClient from " + basePath); this.basePath = basePath; - this.hadoopConf = new SerializableConfiguration(new Configuration(conf)); + this.hadoopConf = new SerializableConfiguration(conf); Path basePathDir = new Path(this.basePath); this.metaPath = basePath + File.separator + METAFOLDER_NAME; Path metaPathDir = new Path(this.metaPath); diff --git a/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/FileSystemViewManager.java b/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/FileSystemViewManager.java index 9d29302c7..9086a91fc 100644 --- a/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/FileSystemViewManager.java +++ b/hoodie-common/src/main/java/com/uber/hoodie/common/table/view/FileSystemViewManager.java @@ -65,7 +65,7 @@ public class FileSystemViewManager { public FileSystemViewManager(SerializableConfiguration conf, FileSystemViewStorageConfig viewStorageConfig, Function2 viewCreator) { - this.conf = conf; + this.conf = new SerializableConfiguration(conf); this.viewStorageConfig = viewStorageConfig; this.globalViewMap = new ConcurrentHashMap<>(); this.viewCreator = viewCreator; diff --git a/hoodie-timeline-service/src/main/java/com/uber/hoodie/timeline/service/TimelineService.java b/hoodie-timeline-service/src/main/java/com/uber/hoodie/timeline/service/TimelineService.java index ec25019d8..0707badb5 100644 --- a/hoodie-timeline-service/src/main/java/com/uber/hoodie/timeline/service/TimelineService.java +++ b/hoodie-timeline-service/src/main/java/com/uber/hoodie/timeline/service/TimelineService.java @@ -50,13 +50,18 @@ public class TimelineService { return serverPort; } - public TimelineService(int serverPort, FileSystemViewManager globalFileSystemViewManager) throws IOException { - this.conf = FSUtils.prepareHadoopConf(new Configuration()); + public TimelineService(int serverPort, FileSystemViewManager globalFileSystemViewManager, + Configuration conf) throws IOException { + this.conf = FSUtils.prepareHadoopConf(conf); this.fs = FileSystem.get(conf); this.serverPort = serverPort; this.fsViewsManager = globalFileSystemViewManager; } + public TimelineService(int serverPort, FileSystemViewManager globalFileSystemViewManager) throws IOException { + this(serverPort, globalFileSystemViewManager, new Configuration()); + } + public TimelineService(Config config) throws IOException { this(config.serverPort, buildFileSystemViewManager(config, new SerializableConfiguration(FSUtils.prepareHadoopConf(new Configuration()))));