You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@distributedlog.apache.org by si...@apache.org on 2017/01/05 00:51:30 UTC
[25/51] [partial] incubator-distributedlog git commit: DL-4:
Repackage the source under apache namespace
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/bk/package-info.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/bk/package-info.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/bk/package-info.java
deleted file mode 100644
index 697d2e9..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/bk/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * BookKeeper related util functions.
- * <p>
- * <h2>Ledger Allocator</h2>
- *
- */
-package com.twitter.distributedlog.bk;
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentListener.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentListener.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentListener.java
deleted file mode 100644
index 2196245..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentListener.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.callback;
-
-import com.twitter.distributedlog.LogSegmentMetadata;
-
-import java.util.List;
-
-/**
- * Listener on log segments changes for a given stream used by {@link com.twitter.distributedlog.BKLogReadHandler}
- */
-public interface LogSegmentListener {
-
- /**
- * Notified when <i>segments</i> updated. The new sorted log segments
- * list is returned in this method.
- *
- * @param segments
- * updated list of segments.
- */
- void onSegmentsUpdated(List<LogSegmentMetadata> segments);
-
- /**
- * Notified when the log stream is deleted.
- */
- void onLogStreamDeleted();
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentNamesListener.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentNamesListener.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentNamesListener.java
deleted file mode 100644
index e38f305..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/LogSegmentNamesListener.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.callback;
-
-import org.apache.bookkeeper.versioning.Versioned;
-
-import java.util.List;
-
-/**
- * Listener on list of log segments changes for a given stream used by
- * {@link com.twitter.distributedlog.logsegment.LogSegmentMetadataStore}.
- */
-public interface LogSegmentNamesListener {
- /**
- * Notified when <i>segments</i> updated. The new log segments
- * list is returned in this method.
- *
- * @param segments
- * updated list of segments.
- */
- void onSegmentsUpdated(Versioned<List<String>> segments);
-
- /**
- * Notified when the log stream is deleted.
- */
- void onLogStreamDeleted();
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/NamespaceListener.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/NamespaceListener.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/NamespaceListener.java
deleted file mode 100644
index fc63ff5..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/NamespaceListener.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.callback;
-
-import com.google.common.annotations.Beta;
-
-import java.util.Iterator;
-
-@Beta
-public interface NamespaceListener {
-
- /**
- * Updated with latest streams.
- *
- * @param streams
- * latest list of streams under a given namespace.
- */
- void onStreamsChanged(Iterator<String> streams);
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/ReadAheadCallback.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/ReadAheadCallback.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/ReadAheadCallback.java
deleted file mode 100644
index 7c46a1a..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/ReadAheadCallback.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.callback;
-
-/**
- * ReadAhead Callback
- */
-public interface ReadAheadCallback {
- void resumeReadAhead();
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/package-info.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/package-info.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/package-info.java
deleted file mode 100644
index 2724d43..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/callback/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * Callbacks for distributedlog operations.
- */
-package com.twitter.distributedlog.callback;
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentBaseConfiguration.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentBaseConfiguration.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentBaseConfiguration.java
deleted file mode 100644
index 91603c1..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentBaseConfiguration.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import com.google.common.base.Preconditions;
-
-import org.apache.commons.configuration.AbstractConfiguration;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Iterator;
-import java.util.concurrent.ConcurrentHashMap;
-
-/**
- * Configuration view built on concurrent hash map for fast thread-safe access.
- * Notes:
- * 1. Multi-property list aggregation will not work in this class. I.e. commons config
- * normally combines all properties with the same key into one list property automatically.
- * This class simply overwrites any existing mapping.
- */
-public class ConcurrentBaseConfiguration extends AbstractConfiguration {
- static final Logger LOG = LoggerFactory.getLogger(ConcurrentBaseConfiguration.class);
-
- private final ConcurrentHashMap<String, Object> map;
-
- public ConcurrentBaseConfiguration() {
- this.map = new ConcurrentHashMap<String, Object>();
- }
-
- @Override
- protected void addPropertyDirect(String key, Object value) {
- Preconditions.checkNotNull(value);
- map.put(key, value);
- }
-
- @Override
- public Object getProperty(String key) {
- return map.get(key);
- }
-
- @Override
- public Iterator getKeys() {
- return map.keySet().iterator();
- }
-
- @Override
- public boolean containsKey(String key) {
- return map.containsKey(key);
- }
-
- @Override
- public boolean isEmpty() {
- return map.isEmpty();
- }
-
- @Override
- protected void clearPropertyDirect(String key) {
- map.remove(key);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentConstConfiguration.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentConstConfiguration.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentConstConfiguration.java
deleted file mode 100644
index a044a13..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConcurrentConstConfiguration.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import com.google.common.base.Preconditions;
-import org.apache.commons.configuration.Configuration;
-
-/**
- * Invariant thread-safe view of some configuration.
- */
-public class ConcurrentConstConfiguration extends ConcurrentBaseConfiguration {
- public ConcurrentConstConfiguration(Configuration conf) {
- Preconditions.checkNotNull(conf);
- copy(conf);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationListener.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationListener.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationListener.java
deleted file mode 100644
index d4c44b7..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-/**
- * Configuration listener triggered when reloading configuration settings.
- */
-public interface ConfigurationListener {
-
- /**
- * Reload the configuration.
- *
- * @param conf configuration to reload
- */
- void onReload(ConcurrentBaseConfiguration conf);
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationSubscription.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationSubscription.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationSubscription.java
deleted file mode 100644
index dadfe81..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/ConfigurationSubscription.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import java.io.FileNotFoundException;
-import java.util.List;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.Iterator;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Lists;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Sets;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.FileConfiguration;
-import org.apache.commons.configuration.reloading.FileChangedReloadingStrategy;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * ConfigurationSubscription publishes a reloading, thread-safe view of file configuration. The class
- * periodically calls FileConfiguration.reload on the underlying conf, and propagates changes to the
- * concurrent config. The configured FileChangedReloadingStrategy ensures that file config will only
- * be reloaded if something changed.
- * Notes:
- * 1. Reload schedule is never terminated. The assumption is a finite number of these are started
- * at the calling layer, and terminated only once the executor service is shut down.
- * 2. The underlying FileConfiguration is not at all thread-safe, so its important to ensure access
- * to this object is always single threaded.
- */
-public class ConfigurationSubscription {
- static final Logger LOG = LoggerFactory.getLogger(ConfigurationSubscription.class);
-
- private final ConcurrentBaseConfiguration viewConfig;
- private final ScheduledExecutorService executorService;
- private final int reloadPeriod;
- private final TimeUnit reloadUnit;
- private final List<FileConfigurationBuilder> fileConfigBuilders;
- private final List<FileConfiguration> fileConfigs;
- private final CopyOnWriteArraySet<ConfigurationListener> confListeners;
-
- public ConfigurationSubscription(ConcurrentBaseConfiguration viewConfig,
- List<FileConfigurationBuilder> fileConfigBuilders,
- ScheduledExecutorService executorService,
- int reloadPeriod,
- TimeUnit reloadUnit)
- throws ConfigurationException {
- Preconditions.checkNotNull(fileConfigBuilders);
- Preconditions.checkArgument(!fileConfigBuilders.isEmpty());
- Preconditions.checkNotNull(executorService);
- Preconditions.checkNotNull(viewConfig);
- this.viewConfig = viewConfig;
- this.executorService = executorService;
- this.reloadPeriod = reloadPeriod;
- this.reloadUnit = reloadUnit;
- this.fileConfigBuilders = fileConfigBuilders;
- this.fileConfigs = Lists.newArrayListWithExpectedSize(this.fileConfigBuilders.size());
- this.confListeners = new CopyOnWriteArraySet<ConfigurationListener>();
- reload();
- scheduleReload();
- }
-
- public void registerListener(ConfigurationListener listener) {
- this.confListeners.add(listener);
- }
-
- public void unregisterListener(ConfigurationListener listener) {
- this.confListeners.remove(listener);
- }
-
- private boolean initConfig() {
- if (fileConfigs.isEmpty()) {
- try {
- for (FileConfigurationBuilder fileConfigBuilder : fileConfigBuilders) {
- FileConfiguration fileConfig = fileConfigBuilder.getConfiguration();
- FileChangedReloadingStrategy reloadingStrategy = new FileChangedReloadingStrategy();
- reloadingStrategy.setRefreshDelay(0);
- fileConfig.setReloadingStrategy(reloadingStrategy);
- fileConfigs.add(fileConfig);
- }
- } catch (ConfigurationException ex) {
- if (!fileNotFound(ex)) {
- LOG.error("Config init failed {}", ex);
- }
- }
- }
- return !fileConfigs.isEmpty();
- }
-
- private void scheduleReload() {
- executorService.scheduleAtFixedRate(new Runnable() {
- @Override
- public void run() {
- reload();
- }
- }, 0, reloadPeriod, reloadUnit);
- }
-
- @VisibleForTesting
- void reload() {
- // No-op if already loaded.
- if (!initConfig()) {
- return;
- }
- // Reload if config exists.
- Set<String> confKeys = Sets.newHashSet();
- for (FileConfiguration fileConfig : fileConfigs) {
- LOG.debug("Check and reload config, file={}, lastModified={}", fileConfig.getFile(),
- fileConfig.getFile().lastModified());
- fileConfig.reload();
- // load keys
- Iterator keyIter = fileConfig.getKeys();
- while (keyIter.hasNext()) {
- String key = (String) keyIter.next();
- confKeys.add(key);
- }
- }
- // clear unexisted keys
- Iterator viewIter = viewConfig.getKeys();
- while (viewIter.hasNext()) {
- String key = (String) viewIter.next();
- if (!confKeys.contains(key)) {
- clearViewProperty(key);
- }
- }
- LOG.info("Reload features : {}", confKeys);
- // load keys from files
- for (FileConfiguration fileConfig : fileConfigs) {
- try {
- loadView(fileConfig);
- } catch (Exception ex) {
- if (!fileNotFound(ex)) {
- LOG.error("Config reload failed for file {}", fileConfig.getFileName(), ex);
- }
- }
- }
- for (ConfigurationListener listener : confListeners) {
- listener.onReload(viewConfig);
- }
- }
-
- private boolean fileNotFound(Exception ex) {
- return ex instanceof FileNotFoundException ||
- ex.getCause() != null && ex.getCause() instanceof FileNotFoundException;
- }
-
- private void loadView(FileConfiguration fileConfig) {
- Iterator fileIter = fileConfig.getKeys();
- while (fileIter.hasNext()) {
- String key = (String) fileIter.next();
- setViewProperty(fileConfig, key, fileConfig.getProperty(key));
- }
- }
-
- private void clearViewProperty(String key) {
- LOG.debug("Removing property, key={}", key);
- viewConfig.clearProperty(key);
- }
-
- private void setViewProperty(FileConfiguration fileConfig,
- String key,
- Object value) {
- if (!viewConfig.containsKey(key) || !viewConfig.getProperty(key).equals(value)) {
- LOG.debug("Setting property, key={} value={}", key, fileConfig.getProperty(key));
- viewConfig.setProperty(key, fileConfig.getProperty(key));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicConfigurationFactory.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicConfigurationFactory.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicConfigurationFactory.java
deleted file mode 100644
index 2510f74..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicConfigurationFactory.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-
-import com.google.common.collect.Lists;
-import com.twitter.distributedlog.DistributedLogConfiguration;
-
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.net.MalformedURLException;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.commons.configuration.ConfigurationException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Encapsulates creation of DynamicDistributedLogConfiguration instances. Ensures one instance per
- * factory.
- * Notes:
- * Once loaded, stays loaded until shutdown. Caller ensures small finite number of configs are created.
- */
-public class DynamicConfigurationFactory {
- private static final Logger LOG = LoggerFactory.getLogger(DynamicConfigurationFactory.class);
-
- private final Map<String, DynamicDistributedLogConfiguration> dynamicConfigs;
- private final List<ConfigurationSubscription> subscriptions;
- private final ScheduledExecutorService executorService;
- private final int reloadPeriod;
- private final TimeUnit reloadUnit;
-
- public DynamicConfigurationFactory(ScheduledExecutorService executorService, int reloadPeriod, TimeUnit reloadUnit) {
- this.executorService = executorService;
- this.reloadPeriod = reloadPeriod;
- this.reloadUnit = reloadUnit;
- this.dynamicConfigs = new HashMap<String, DynamicDistributedLogConfiguration>();
- this.subscriptions = new LinkedList<ConfigurationSubscription>();
- }
-
- public synchronized Optional<DynamicDistributedLogConfiguration> getDynamicConfiguration(
- String configPath,
- ConcurrentBaseConfiguration defaultConf) throws ConfigurationException {
- Preconditions.checkNotNull(configPath);
- try {
- if (!dynamicConfigs.containsKey(configPath)) {
- File configFile = new File(configPath);
- FileConfigurationBuilder properties =
- new PropertiesConfigurationBuilder(configFile.toURI().toURL());
- DynamicDistributedLogConfiguration dynConf =
- new DynamicDistributedLogConfiguration(defaultConf);
- List<FileConfigurationBuilder> fileConfigBuilders = Lists.newArrayList(properties);
- ConfigurationSubscription subscription = new ConfigurationSubscription(
- dynConf, fileConfigBuilders, executorService, reloadPeriod, reloadUnit);
- subscriptions.add(subscription);
- dynamicConfigs.put(configPath, dynConf);
- LOG.info("Loaded dynamic configuration at {}", configPath);
- }
- return Optional.of(dynamicConfigs.get(configPath));
- } catch (MalformedURLException ex) {
- throw new ConfigurationException(ex);
- }
- }
-
- public synchronized Optional<DynamicDistributedLogConfiguration> getDynamicConfiguration(String configPath) throws ConfigurationException {
- return getDynamicConfiguration(configPath, new ConcurrentConstConfiguration(new DistributedLogConfiguration()));
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicDistributedLogConfiguration.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicDistributedLogConfiguration.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicDistributedLogConfiguration.java
deleted file mode 100644
index ca43cfa..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/DynamicDistributedLogConfiguration.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import com.twitter.distributedlog.DistributedLogConfiguration;
-import com.twitter.distributedlog.bk.QuorumConfig;
-
-import static com.twitter.distributedlog.DistributedLogConfiguration.*;
-
-/**
- * Whitelist dynamic configuration by adding an accessor to this class.
- */
-public class DynamicDistributedLogConfiguration extends ConcurrentBaseConfiguration {
-
- private final ConcurrentBaseConfiguration defaultConfig;
-
- public DynamicDistributedLogConfiguration(ConcurrentBaseConfiguration defaultConfig) {
- this.defaultConfig = defaultConfig;
- }
-
- private static int getInt(ConcurrentBaseConfiguration configuration,
- String newKey,
- String oldKey,
- int defaultValue) {
- return configuration.getInt(newKey, configuration.getInt(oldKey, defaultValue));
- }
-
- /**
- * Get retention period in hours
- *
- * @return retention period in hours
- */
- public int getRetentionPeriodHours() {
- return getInt(
- this,
- BKDL_RETENTION_PERIOD_IN_HOURS,
- BKDL_RETENTION_PERIOD_IN_HOURS_OLD,
- getInt(defaultConfig,
- BKDL_RETENTION_PERIOD_IN_HOURS,
- BKDL_RETENTION_PERIOD_IN_HOURS_OLD,
- BKDL_RETENTION_PERIOD_IN_HOURS_DEFAULT)
- );
- }
-
- /**
- * A lower threshold bytes per second limit on writes to the distributedlog proxy.
- *
- * @return Bytes per second write limit
- */
- public int getBpsSoftWriteLimit() {
- return getInt(DistributedLogConfiguration.BKDL_BPS_SOFT_WRITE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_BPS_SOFT_WRITE_LIMIT,
- DistributedLogConfiguration.BKDL_BPS_SOFT_WRITE_LIMIT_DEFAULT));
- }
-
- /**
- * An upper threshold bytes per second limit on writes to the distributedlog proxy.
- *
- * @return Bytes per second write limit
- */
- public int getBpsHardWriteLimit() {
- return getInt(DistributedLogConfiguration.BKDL_BPS_HARD_WRITE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_BPS_HARD_WRITE_LIMIT,
- DistributedLogConfiguration.BKDL_BPS_HARD_WRITE_LIMIT_DEFAULT));
- }
-
- /**
- * A lower threshold requests per second limit on writes to the distributedlog proxy.
- *
- * @return Requests per second write limit
- */
- public int getRpsSoftWriteLimit() {
- return getInt(DistributedLogConfiguration.BKDL_RPS_SOFT_WRITE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_RPS_SOFT_WRITE_LIMIT,
- DistributedLogConfiguration.BKDL_RPS_SOFT_WRITE_LIMIT_DEFAULT));
- }
-
- /**
- * An upper threshold requests per second limit on writes to the distributedlog proxy.
- *
- * @return Requests per second write limit
- */
- public int getRpsHardWriteLimit() {
- return getInt(DistributedLogConfiguration.BKDL_RPS_HARD_WRITE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_RPS_HARD_WRITE_LIMIT,
- DistributedLogConfiguration.BKDL_RPS_HARD_WRITE_LIMIT_DEFAULT));
- }
-
- /**
- * A lower threshold requests per second limit on writes to the distributedlog proxy globally.
- *
- * @return Requests per second write limit
- */
- public int getRpsSoftServiceLimit() {
- return getInt(DistributedLogConfiguration.BKDL_RPS_SOFT_SERVICE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_RPS_SOFT_SERVICE_LIMIT,
- DistributedLogConfiguration.BKDL_RPS_SOFT_SERVICE_LIMIT_DEFAULT));
- }
-
- /**
- * An upper threshold requests per second limit on writes to the distributedlog proxy globally.
- *
- * @return Requests per second write limit
- */
- public int getRpsHardServiceLimit() {
- return getInt(DistributedLogConfiguration.BKDL_RPS_HARD_SERVICE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_RPS_HARD_SERVICE_LIMIT,
- DistributedLogConfiguration.BKDL_RPS_HARD_SERVICE_LIMIT_DEFAULT));
- }
-
- /**
- * When 60min average rps for the entire service instance hits this value, new streams will be
- * rejected.
- *
- * @return Requests per second limit
- */
- public int getRpsStreamAcquireServiceLimit() {
- return getInt(DistributedLogConfiguration.BKDL_RPS_STREAM_ACQUIRE_SERVICE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_RPS_STREAM_ACQUIRE_SERVICE_LIMIT,
- DistributedLogConfiguration.BKDL_RPS_STREAM_ACQUIRE_SERVICE_LIMIT_DEFAULT));
- }
-
- /**
- * A lower threshold bytes per second limit on writes to the distributedlog proxy globally.
- *
- * @return Bytes per second write limit
- */
- public int getBpsSoftServiceLimit() {
- return getInt(DistributedLogConfiguration.BKDL_BPS_SOFT_SERVICE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_BPS_SOFT_SERVICE_LIMIT,
- DistributedLogConfiguration.BKDL_BPS_SOFT_SERVICE_LIMIT_DEFAULT));
- }
-
- /**
- * An upper threshold bytes per second limit on writes to the distributedlog proxy globally.
- *
- * @return Bytes per second write limit
- */
- public int getBpsHardServiceLimit() {
- return getInt(DistributedLogConfiguration.BKDL_BPS_HARD_SERVICE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_BPS_HARD_SERVICE_LIMIT,
- DistributedLogConfiguration.BKDL_BPS_HARD_SERVICE_LIMIT_DEFAULT));
- }
-
- /**
- * When 60min average bps for the entire service instance hits this value, new streams will be
- * rejected.
- *
- * @return Bytes per second limit
- */
- public int getBpsStreamAcquireServiceLimit() {
- return getInt(DistributedLogConfiguration.BKDL_BPS_STREAM_ACQUIRE_SERVICE_LIMIT,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_BPS_STREAM_ACQUIRE_SERVICE_LIMIT,
- DistributedLogConfiguration.BKDL_BPS_STREAM_ACQUIRE_SERVICE_LIMIT_DEFAULT));
- }
-
- /**
- * Get percent of write bytes which should be delayed by BKDL_EI_INJECTED_WRITE_DELAY_MS.
- *
- * @return percent of writes to delay.
- */
- public double getEIInjectedWriteDelayPercent() {
- return getDouble(DistributedLogConfiguration.BKDL_EI_INJECTED_WRITE_DELAY_PERCENT,
- defaultConfig.getDouble(DistributedLogConfiguration.BKDL_EI_INJECTED_WRITE_DELAY_PERCENT,
- DistributedLogConfiguration.BKDL_EI_INJECTED_WRITE_DELAY_PERCENT_DEFAULT));
- }
-
- /**
- * Get amount of time to delay writes for in writer failure injection.
- *
- * @return millis to delay writes for.
- */
- public int getEIInjectedWriteDelayMs() {
- return getInt(DistributedLogConfiguration.BKDL_EI_INJECTED_WRITE_DELAY_MS,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_EI_INJECTED_WRITE_DELAY_MS,
- DistributedLogConfiguration.BKDL_EI_INJECTED_WRITE_DELAY_MS_DEFAULT));
- }
-
- /**
- * Get output buffer size
- *
- * @return buffer size
- */
- public int getOutputBufferSize() {
- return getInt(
- this,
- BKDL_OUTPUT_BUFFER_SIZE,
- BKDL_OUTPUT_BUFFER_SIZE_OLD,
- getInt(defaultConfig,
- BKDL_OUTPUT_BUFFER_SIZE,
- BKDL_OUTPUT_BUFFER_SIZE_OLD,
- BKDL_OUTPUT_BUFFER_SIZE_DEFAULT)
- );
- }
-
- /**
- * Get Periodic Log Flush Frequency in seconds
- *
- * @return periodic flush frequency
- */
- public int getPeriodicFlushFrequencyMilliSeconds() {
- return getInt(DistributedLogConfiguration.BKDL_PERIODIC_FLUSH_FREQUENCY_MILLISECONDS,
- defaultConfig.getInt(DistributedLogConfiguration.BKDL_PERIODIC_FLUSH_FREQUENCY_MILLISECONDS,
- DistributedLogConfiguration.BKDL_PERIODIC_FLUSH_FREQUENCY_MILLISECONDS_DEFAULT));
- }
-
- /**
- * Get the number of entries that readahead worker reads as a batch from bookkeeper
- *
- * @return the batch size
- */
- public int getReadAheadBatchSize() {
- return getInt(
- this,
- BKDL_READAHEAD_BATCHSIZE,
- BKDL_READAHEAD_BATCHSIZE_OLD,
- getInt(defaultConfig,
- BKDL_READAHEAD_BATCHSIZE,
- BKDL_READAHEAD_BATCHSIZE_OLD,
- BKDL_READAHEAD_BATCHSIZE_DEFAULT)
- );
- }
-
- /**
- * Get the maximum number of {@link com.twitter.distributedlog.LogRecord } that readahead worker will cache.
- *
- * @return the maximum number
- */
- public int getReadAheadMaxRecords() {
- return getInt(
- this,
- BKDL_READAHEAD_MAX_RECORDS,
- BKDL_READAHEAD_MAX_RECORDS_OLD,
- getInt(defaultConfig,
- BKDL_READAHEAD_MAX_RECORDS,
- BKDL_READAHEAD_MAX_RECORDS_OLD,
- BKDL_READAHEAD_MAX_RECORDS_DEFAULT)
- );
- }
-
- /**
- * Whether to enable ledger allocator pool or not.
- * It is disabled by default.
- *
- * @return whether using ledger allocator pool or not.
- */
- public boolean getEnableLedgerAllocatorPool() {
- return getBoolean(BKDL_ENABLE_LEDGER_ALLOCATOR_POOL,
- defaultConfig.getBoolean(
- BKDL_ENABLE_LEDGER_ALLOCATOR_POOL,
- BKDL_ENABLE_LEDGER_ALLOCATOR_POOL_DEFAULT));
- }
-
- /**
- * Get the quorum config.
- *
- * @return quorum config
- */
- public QuorumConfig getQuorumConfig() {
- int ensembleSize = getInt(
- this,
- BKDL_BOOKKEEPER_ENSEMBLE_SIZE,
- BKDL_BOOKKEEPER_ENSEMBLE_SIZE_OLD,
- getInt(defaultConfig,
- BKDL_BOOKKEEPER_ENSEMBLE_SIZE,
- BKDL_BOOKKEEPER_ENSEMBLE_SIZE_OLD,
- BKDL_BOOKKEEPER_ENSEMBLE_SIZE_DEFAULT));
- int writeQuorumSize = getInt(
- this,
- BKDL_BOOKKEEPER_WRITE_QUORUM_SIZE,
- BKDL_BOOKKEEPER_WRITE_QUORUM_SIZE_OLD,
- getInt(defaultConfig,
- BKDL_BOOKKEEPER_WRITE_QUORUM_SIZE,
- BKDL_BOOKKEEPER_WRITE_QUORUM_SIZE_OLD,
- BKDL_BOOKKEEPER_WRITE_QUORUM_SIZE_DEFAULT));
- int ackQuorumSize = getInt(
- this,
- BKDL_BOOKKEEPER_ACK_QUORUM_SIZE,
- BKDL_BOOKKEEPER_ACK_QUORUM_SIZE_OLD,
- getInt(defaultConfig,
- BKDL_BOOKKEEPER_ACK_QUORUM_SIZE,
- BKDL_BOOKKEEPER_ACK_QUORUM_SIZE_OLD,
- BKDL_BOOKKEEPER_ACK_QUORUM_SIZE_DEFAULT));
- return new QuorumConfig(ensembleSize, writeQuorumSize, ackQuorumSize);
- }
-
- /**
- * Get the maximum number of partitions of each stream allowed to be acquired per proxy.
- *
- * @return maximum number of partitions of each stream allowed to be acquired
- * @see DistributedLogConfiguration#getMaxAcquiredPartitionsPerProxy()
- */
- public int getMaxAcquiredPartitionsPerProxy() {
- return getInt(
- BKDL_MAX_ACQUIRED_PARTITIONS_PER_PROXY,
- defaultConfig.getInt(
- BKDL_MAX_ACQUIRED_PARTITIONS_PER_PROXY,
- BKDL_MAX_ACQUIRED_PARTITIONS_PER_PROXY_DEFAULT)
- );
- }
-
- /**
- * Get the maximum number of partitions of each stream allowed to cache per proxy.
- *
- * @return maximum number of partitions of each stream allowed to cache
- * @see DistributedLogConfiguration#getMaxAcquiredPartitionsPerProxy()
- */
- public int getMaxCachedPartitionsPerProxy() {
- return getInt(
- BKDL_MAX_CACHED_PARTITIONS_PER_PROXY,
- defaultConfig.getInt(
- BKDL_MAX_CACHED_PARTITIONS_PER_PROXY,
- BKDL_MAX_CACHED_PARTITIONS_PER_PROXY_DEFAULT)
- );
- }
-
- /**
- * Check whether the durable write is enabled.
- *
- * @return true if durable write is enabled. otherwise, false.
- */
- public boolean isDurableWriteEnabled() {
- return getBoolean(BKDL_IS_DURABLE_WRITE_ENABLED,
- defaultConfig.getBoolean(
- BKDL_IS_DURABLE_WRITE_ENABLED,
- BKDL_IS_DURABLE_WRITE_ENABLED_DEFAULT));
- }
-
- /**
- * Get the flag whether to deserialize recordset on reads.
- *
- * @return flag whether to deserialize recordset on reads.
- */
- public boolean getDeserializeRecordSetOnReads() {
- return getBoolean(BKDL_DESERIALIZE_RECORDSET_ON_READS,
- defaultConfig.getBoolean(
- BKDL_DESERIALIZE_RECORDSET_ON_READS,
- BKDL_DESERIALIZE_RECORDSET_ON_READS_DEFAULT));
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/FileConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/FileConfigurationBuilder.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/FileConfigurationBuilder.java
deleted file mode 100644
index b3c4e6c..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/FileConfigurationBuilder.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.FileConfiguration;
-
-/**
- * Abstract out FileConfiguration subclass construction.
- */
-public interface FileConfigurationBuilder {
- FileConfiguration getConfiguration() throws ConfigurationException;
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/PropertiesConfigurationBuilder.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/PropertiesConfigurationBuilder.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/PropertiesConfigurationBuilder.java
deleted file mode 100644
index 6efaa20..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/PropertiesConfigurationBuilder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.config;
-
-import java.net.URL;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.FileConfiguration;
-import org.apache.commons.configuration.PropertiesConfiguration;
-
-/**
- * Hide PropertiesConfiguration dependency.
- */
-public class PropertiesConfigurationBuilder implements FileConfigurationBuilder {
- private URL url;
-
- public PropertiesConfigurationBuilder(URL url) {
- this.url = url;
- }
-
- @Override
- public FileConfiguration getConfiguration() throws ConfigurationException {
- return new PropertiesConfiguration(url);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/config/package-info.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/package-info.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/config/package-info.java
deleted file mode 100644
index b4f77b4..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/config/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * DistributedLog Configuration
- */
-package com.twitter.distributedlog.config;
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/exceptions/ZKException.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/exceptions/ZKException.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/exceptions/ZKException.java
deleted file mode 100644
index 8ed1610..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/exceptions/ZKException.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.exceptions;
-
-import com.twitter.distributedlog.thrift.service.StatusCode;
-import org.apache.zookeeper.KeeperException;
-import org.apache.zookeeper.KeeperException.Code;
-
-/**
- * TODO: move ZKException to distributedlog-protocol
- */
-public class ZKException extends DLException {
-
- private static final long serialVersionUID = 7542748595054923600L;
-
- final KeeperException.Code code;
-
- public ZKException(String msg, Code code) {
- super(StatusCode.ZOOKEEPER_ERROR, msg + " : " + code);
- this.code = code;
- }
-
- public ZKException(String msg, KeeperException exception) {
- super(StatusCode.ZOOKEEPER_ERROR, msg, exception);
- this.code = exception.code();
- }
-
- public Code getKeeperExceptionCode() {
- return this.code;
- }
-
- public static boolean isRetryableZKException(ZKException zke) {
- KeeperException.Code code = zke.getKeeperExceptionCode();
- return KeeperException.Code.CONNECTIONLOSS == code ||
- KeeperException.Code.OPERATIONTIMEOUT == code ||
- KeeperException.Code.SESSIONEXPIRED == code ||
- KeeperException.Code.SESSIONMOVED == code;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/AbstractFeatureProvider.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/AbstractFeatureProvider.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/AbstractFeatureProvider.java
deleted file mode 100644
index f484307..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/AbstractFeatureProvider.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.feature;
-
-import com.twitter.distributedlog.DistributedLogConfiguration;
-import org.apache.bookkeeper.feature.CacheableFeatureProvider;
-import org.apache.bookkeeper.feature.FeatureProvider;
-import org.apache.bookkeeper.feature.Feature;
-import org.apache.bookkeeper.stats.StatsLogger;
-import org.apache.commons.configuration.ConfigurationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * Decider based feature provider
- */
-public abstract class AbstractFeatureProvider<T extends Feature> extends CacheableFeatureProvider<T> {
-
- protected static final Logger logger = LoggerFactory.getLogger(AbstractFeatureProvider.class);
-
- public static FeatureProvider getFeatureProvider(String rootScope,
- DistributedLogConfiguration conf,
- StatsLogger statsLogger)
- throws IOException {
- Class<? extends FeatureProvider> featureProviderClass;
- try {
- featureProviderClass = conf.getFeatureProviderClass();
- } catch (ConfigurationException e) {
- throw new IOException("Can't initialize the feature provider : ", e);
- }
- // create feature provider
- Constructor<? extends FeatureProvider> constructor;
- try {
- constructor = featureProviderClass.getDeclaredConstructor(
- String.class,
- DistributedLogConfiguration.class,
- StatsLogger.class);
- } catch (NoSuchMethodException e) {
- throw new IOException("No constructor found for feature provider class " + featureProviderClass + " : ", e);
- }
- try {
- return constructor.newInstance(rootScope, conf, statsLogger);
- } catch (InstantiationException e) {
- throw new IOException("Failed to instantiate feature provider : ", e);
- } catch (IllegalAccessException e) {
- throw new IOException("Encountered illegal access when instantiating feature provider : ", e);
- } catch (InvocationTargetException e) {
- Throwable targetException = e.getTargetException();
- if (targetException instanceof IOException) {
- throw (IOException) targetException;
- } else {
- throw new IOException("Encountered invocation target exception while instantiating feature provider : ", e);
- }
- }
- }
-
- protected final DistributedLogConfiguration conf;
- protected final StatsLogger statsLogger;
-
- protected AbstractFeatureProvider(String rootScope,
- DistributedLogConfiguration conf,
- StatsLogger statsLogger) {
- super(rootScope);
- this.conf = conf;
- this.statsLogger = statsLogger;
- }
-
- /**
- * Start the feature provider.
- *
- * @throws IOException when failed to start the feature provider.
- */
- public void start() throws IOException {
- // no-op
- }
-
- /**
- * Stop the feature provider.
- */
- public void stop() {
- // no-op
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/ConfigurationFeatureProvider.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/ConfigurationFeatureProvider.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/ConfigurationFeatureProvider.java
deleted file mode 100644
index 02a4d79..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/ConfigurationFeatureProvider.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.feature;
-
-import com.twitter.distributedlog.config.ConcurrentBaseConfiguration;
-import org.apache.bookkeeper.feature.CacheableFeatureProvider;
-import org.apache.bookkeeper.feature.Feature;
-import org.apache.bookkeeper.feature.FeatureProvider;
-import org.apache.bookkeeper.feature.SettableFeature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.concurrent.ConcurrentMap;
-
-/**
- * Feature Provider that load features from configuration
- */
-class ConfigurationFeatureProvider extends CacheableFeatureProvider {
-
- private static final Logger logger = LoggerFactory.getLogger(ConfigurationFeatureProvider.class);
-
- static SettableFeature makeFeature(ConcurrentBaseConfiguration featuresConf,
- ConcurrentMap<String, SettableFeature> features,
- String featureName) {
- SettableFeature feature = features.get(featureName);
- if (null == feature) {
- int availability = featuresConf.getInt(featureName, 0);
- feature = new SettableFeature(featureName, availability);
- SettableFeature oldFeature =
- features.putIfAbsent(featureName, feature);
- if (null != oldFeature) {
- feature = oldFeature;
- } else {
- logger.info("Load feature {}={}", featureName, availability);
- }
- }
- return feature;
- }
-
- private final ConcurrentBaseConfiguration featuresConf;
- private final ConcurrentMap<String, SettableFeature> features;
-
- ConfigurationFeatureProvider(String rootScope,
- ConcurrentBaseConfiguration featuresConf,
- ConcurrentMap<String, SettableFeature> features) {
- super(rootScope);
- this.featuresConf = featuresConf;
- this.features = features;
- }
-
- @Override
- protected Feature makeFeature(String featureName) {
- return makeFeature(featuresConf, features, featureName);
- }
-
- @Override
- protected FeatureProvider makeProvider(String fullScopeName) {
- return new ConfigurationFeatureProvider(
- fullScopeName, featuresConf, features);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/CoreFeatureKeys.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/CoreFeatureKeys.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/CoreFeatureKeys.java
deleted file mode 100644
index 49b3354..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/CoreFeatureKeys.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.feature;
-
-/**
- * List of feature keys used by distributedlog core
- */
-public enum CoreFeatureKeys {
- // @Deprecated: bkc features are managed by bookkeeper prefixed with a scope
- DISABLE_DURABILITY_ENFORCEMENT,
- // disabling logsegment rolling
- DISABLE_LOGSEGMENT_ROLLING,
- DISABLE_WRITE_LIMIT,
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DefaultFeatureProvider.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DefaultFeatureProvider.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DefaultFeatureProvider.java
deleted file mode 100644
index 6554eaa..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DefaultFeatureProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.feature;
-
-import com.twitter.distributedlog.DistributedLogConfiguration;
-import org.apache.bookkeeper.feature.Feature;
-import org.apache.bookkeeper.feature.FeatureProvider;
-import org.apache.bookkeeper.feature.SettableFeature;
-import org.apache.bookkeeper.feature.SettableFeatureProvider;
-import org.apache.bookkeeper.stats.StatsLogger;
-
-/**
- * Default feature provider which disable all features by default.
- */
-public class DefaultFeatureProvider extends AbstractFeatureProvider {
-
- public DefaultFeatureProvider(String rootScope,
- DistributedLogConfiguration conf,
- StatsLogger statsLogger) {
- super(rootScope, conf, statsLogger);
- }
-
- @Override
- protected Feature makeFeature(String featureName) {
- return new SettableFeature(featureName, 0);
- }
-
- @Override
- protected FeatureProvider makeProvider(String fullScopeName) {
- return new SettableFeatureProvider(fullScopeName, 0);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DynamicConfigurationFeatureProvider.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DynamicConfigurationFeatureProvider.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DynamicConfigurationFeatureProvider.java
deleted file mode 100644
index 1eeb155..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/DynamicConfigurationFeatureProvider.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.feature;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import com.twitter.distributedlog.DistributedLogConfiguration;
-import com.twitter.distributedlog.config.ConcurrentBaseConfiguration;
-import com.twitter.distributedlog.config.ConfigurationListener;
-import com.twitter.distributedlog.config.ConfigurationSubscription;
-import com.twitter.distributedlog.config.FileConfigurationBuilder;
-import com.twitter.distributedlog.config.PropertiesConfigurationBuilder;
-import org.apache.bookkeeper.feature.Feature;
-import org.apache.bookkeeper.feature.FeatureProvider;
-import org.apache.bookkeeper.feature.SettableFeature;
-import org.apache.bookkeeper.stats.StatsLogger;
-import org.apache.commons.configuration.ConfigurationException;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Feature Provider based dynamic configuration.
- */
-public class DynamicConfigurationFeatureProvider extends AbstractFeatureProvider
- implements ConfigurationListener {
-
- private final ConcurrentBaseConfiguration featuresConf;
- private ConfigurationSubscription featuresConfSubscription;
- private final ConcurrentMap<String, SettableFeature> features;
- private final ScheduledExecutorService executorService;
-
- public DynamicConfigurationFeatureProvider(String rootScope,
- DistributedLogConfiguration conf,
- StatsLogger statsLogger) {
- super(rootScope, conf, statsLogger);
- this.features = new ConcurrentHashMap<String, SettableFeature>();
- this.featuresConf = new ConcurrentBaseConfiguration();
- this.executorService = Executors.newSingleThreadScheduledExecutor(
- new ThreadFactoryBuilder().setNameFormat("DynamicConfigurationFeatureProvider-%d").build());
- }
-
- ConcurrentBaseConfiguration getFeatureConf() {
- return featuresConf;
- }
-
- ConfigurationSubscription getFeatureConfSubscription() {
- return featuresConfSubscription;
- }
-
- @Override
- public void start() throws IOException {
- List<FileConfigurationBuilder> fileConfigBuilders =
- Lists.newArrayListWithExpectedSize(2);
- String baseConfigPath = conf.getFileFeatureProviderBaseConfigPath();
- Preconditions.checkNotNull(baseConfigPath);
- File baseConfigFile = new File(baseConfigPath);
- FileConfigurationBuilder baseProperties =
- new PropertiesConfigurationBuilder(baseConfigFile.toURI().toURL());
- fileConfigBuilders.add(baseProperties);
- String overlayConfigPath = conf.getFileFeatureProviderOverlayConfigPath();
- if (null != overlayConfigPath) {
- File overlayConfigFile = new File(overlayConfigPath);
- FileConfigurationBuilder overlayProperties =
- new PropertiesConfigurationBuilder(overlayConfigFile.toURI().toURL());
- fileConfigBuilders.add(overlayProperties);
- }
- try {
- this.featuresConfSubscription = new ConfigurationSubscription(
- this.featuresConf,
- fileConfigBuilders,
- executorService,
- conf.getDynamicConfigReloadIntervalSec(),
- TimeUnit.SECONDS);
- } catch (ConfigurationException e) {
- throw new IOException("Failed to register subscription on features configuration");
- }
- this.featuresConfSubscription.registerListener(this);
- }
-
- @Override
- public void stop() {
- this.executorService.shutdown();
- }
-
- @Override
- public void onReload(ConcurrentBaseConfiguration conf) {
- for (Map.Entry<String, SettableFeature> feature : features.entrySet()) {
- String featureName = feature.getKey();
- int availability = conf.getInt(featureName, 0);
- if (availability != feature.getValue().availability()) {
- feature.getValue().set(availability);
- logger.info("Reload feature {}={}", featureName, availability);
- }
- }
- }
-
- @Override
- protected Feature makeFeature(String featureName) {
- return ConfigurationFeatureProvider.makeFeature(
- featuresConf, features, featureName);
- }
-
- @Override
- protected FeatureProvider makeProvider(String fullScopeName) {
- return new ConfigurationFeatureProvider(
- fullScopeName, featuresConf, features);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/package-info.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/package-info.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/package-info.java
deleted file mode 100644
index e8d8134..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/feature/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * Feature & FeatureProvider for distributedlog
- */
-package com.twitter.distributedlog.feature;
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/function/CloseAsyncCloseableFunction.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/CloseAsyncCloseableFunction.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/function/CloseAsyncCloseableFunction.java
deleted file mode 100644
index 698a088..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/CloseAsyncCloseableFunction.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.function;
-
-import com.twitter.distributedlog.io.AsyncCloseable;
-import scala.Function0;
-import scala.runtime.AbstractFunction0;
-import scala.runtime.BoxedUnit;
-
-/**
- * Function to close {@link com.twitter.distributedlog.io.AsyncCloseable}
- */
-public class CloseAsyncCloseableFunction extends AbstractFunction0<BoxedUnit> {
-
- /**
- * Return a function to close an {@link AsyncCloseable}.
- *
- * @param closeable closeable to close
- * @return function to close an {@link AsyncCloseable}
- */
- public static Function0<BoxedUnit> of(AsyncCloseable closeable) {
- return new CloseAsyncCloseableFunction(closeable);
- }
-
- private final AsyncCloseable closeable;
-
- private CloseAsyncCloseableFunction(AsyncCloseable closeable) {
- this.closeable = closeable;
- }
-
- @Override
- public BoxedUnit apply() {
- closeable.asyncClose();
- return BoxedUnit.UNIT;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/function/DefaultValueMapFunction.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/DefaultValueMapFunction.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/function/DefaultValueMapFunction.java
deleted file mode 100644
index f08cd0f..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/DefaultValueMapFunction.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.function;
-
-import scala.runtime.AbstractFunction1;
-
-/**
- * Map Function return default value
- */
-public class DefaultValueMapFunction<T, R> extends AbstractFunction1<T, R> {
-
- public static <T, R> DefaultValueMapFunction<T, R> of(R defaultValue) {
- return new DefaultValueMapFunction<T, R>(defaultValue);
- }
-
- private final R defaultValue;
-
- private DefaultValueMapFunction(R defaultValue) {
- this.defaultValue = defaultValue;
- }
-
- @Override
- public R apply(T any) {
- return defaultValue;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetLastTxIdFunction.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetLastTxIdFunction.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetLastTxIdFunction.java
deleted file mode 100644
index bc77d6a..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetLastTxIdFunction.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.function;
-
-import com.twitter.distributedlog.DistributedLogConstants;
-import com.twitter.distributedlog.LogSegmentMetadata;
-import scala.runtime.AbstractFunction1;
-
-import java.util.List;
-
-/**
- * Retrieve the last tx id from list of log segments
- */
-public class GetLastTxIdFunction extends AbstractFunction1<List<LogSegmentMetadata>, Long> {
-
- public static final GetLastTxIdFunction INSTANCE = new GetLastTxIdFunction();
-
- private GetLastTxIdFunction() {}
-
- @Override
- public Long apply(List<LogSegmentMetadata> segmentList) {
- long lastTxId = DistributedLogConstants.INVALID_TXID;
- for (LogSegmentMetadata l : segmentList) {
- lastTxId = Math.max(lastTxId, l.getLastTxId());
- }
- return lastTxId;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetVersionedValueFunction.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetVersionedValueFunction.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetVersionedValueFunction.java
deleted file mode 100644
index 4e7844c..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/GetVersionedValueFunction.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.function;
-
-import com.twitter.distributedlog.LogSegmentMetadata;
-import org.apache.bookkeeper.versioning.Versioned;
-import scala.Function1;
-import scala.runtime.AbstractFunction1;
-
-import java.util.List;
-
-/**
- * Function to get the versioned value from {@link org.apache.bookkeeper.versioning.Versioned}
- */
-public class GetVersionedValueFunction<T> extends AbstractFunction1<Versioned<T>, T> {
-
- public static final Function1<Versioned<List<LogSegmentMetadata>>, List<LogSegmentMetadata>>
- GET_LOGSEGMENT_LIST_FUNC = new GetVersionedValueFunction<List<LogSegmentMetadata>>();
-
- @Override
- public T apply(Versioned<T> versionedValue) {
- return versionedValue.getValue();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/function/VoidFunctions.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/VoidFunctions.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/function/VoidFunctions.java
deleted file mode 100644
index e260482..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/VoidFunctions.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.twitter.distributedlog.function;
-
-import scala.runtime.AbstractFunction1;
-
-import java.util.List;
-
-public class VoidFunctions {
-
- public static final AbstractFunction1<List<Void>, Void> LIST_TO_VOID_FUNC =
- new AbstractFunction1<List<Void>, Void>() {
- @Override
- public Void apply(List<Void> list) {
- return null;
- }
- };
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-distributedlog/blob/b44820b5/distributedlog-core/src/main/java/com/twitter/distributedlog/function/package-info.java
----------------------------------------------------------------------
diff --git a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/package-info.java b/distributedlog-core/src/main/java/com/twitter/distributedlog/function/package-info.java
deleted file mode 100644
index 2da98dc..0000000
--- a/distributedlog-core/src/main/java/com/twitter/distributedlog/function/package-info.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * Common Functions for DistributedLog
- */
-package com.twitter.distributedlog.function;