diff --git a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/HelixRestDataProviderManager.java b/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/HelixRestDataProviderManager.java deleted file mode 100644 index 58d59fc87d..0000000000 --- a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/HelixRestDataProviderManager.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.apache.helix.rest.common.dataprovider; - -/* - * 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. - * - */ - -/** Init, register listener and manager callback handler for different - * clusters manage the providers lifecycle - * - */ - -import java.util.List; -import org.apache.helix.HelixAdmin; -import org.apache.helix.manager.zk.ZkBaseDataAccessor; -import org.apache.helix.zookeeper.api.client.RealmAwareZkClient; - - -public class HelixRestDataProviderManager { - - protected RealmAwareZkClient _zkclient; - - private HelixAdmin _helixAdmin; - - private RestServiceDataProvider _restServiceDataProvider; - // list of callback handlers - - //TODO: create own zk client - public HelixRestDataProviderManager(RealmAwareZkClient zkclient, HelixAdmin helixAdmin) { - _zkclient = zkclient; - _helixAdmin = helixAdmin; - _restServiceDataProvider = new RestServiceDataProvider(); - init(); - } - - public RestServiceDataProvider getRestServiceDataProvider() { - return _restServiceDataProvider; - } - - private void init() { - List clusters = _helixAdmin.getClusters(); - for (String cluster : clusters) { - PerClusterDataProvider clusterDataProvider = - new PerClusterDataProvider(cluster, _zkclient, new ZkBaseDataAccessor(_zkclient)); - clusterDataProvider.initCache(); - // register callback handler for each provider - _restServiceDataProvider.addClusterDataProvider(cluster, clusterDataProvider); - } - } - - public void close() { - } -} diff --git a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/PerClusterDataProvider.java b/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/PerClusterDataProvider.java deleted file mode 100644 index adcde81f28..0000000000 --- a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/PerClusterDataProvider.java +++ /dev/null @@ -1,91 +0,0 @@ -package org.apache.helix.rest.common.dataprovider; - -/* - * 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. - */ - -import java.util.Map; -import org.apache.helix.BaseDataAccessor; -import org.apache.helix.HelixDataAccessor; -import org.apache.helix.PropertyKey; -import org.apache.helix.common.caches.PropertyCache; -import org.apache.helix.manager.zk.ZKHelixDataAccessor; -import org.apache.helix.model.ClusterConfig; -import org.apache.helix.model.ClusterConstraints; -import org.apache.helix.model.CurrentState; -import org.apache.helix.model.ExternalView; -import org.apache.helix.model.IdealState; -import org.apache.helix.model.InstanceConfig; -import org.apache.helix.model.LiveInstance; -import org.apache.helix.model.ResourceConfig; -import org.apache.helix.model.StateModelDefinition; -import org.apache.helix.zookeeper.api.client.RealmAwareZkClient; - - -/** - * Dara cache for each Helix cluster. Configs, ideal stats and current states are read from ZK and updated - * using event changes. External view are consolidated using current state. - */ -public class PerClusterDataProvider { - - private HelixDataAccessor _accessor; - - private RealmAwareZkClient _zkclient; - - private final String _clusterName; - - // Simple caches - private final RestPropertyCache _instanceConfigCache; - private final RestPropertyCache _clusterConfigCache; - private final RestPropertyCache _resourceConfigCache; - private final RestPropertyCache _liveInstanceCache; - private final RestPropertyCache _idealStateCache; - private final RestPropertyCache _stateModelDefinitionCache; - - // special caches - private final RestCurrentStateCache _currentStateCache; - - // TODO: add external view caches - - public PerClusterDataProvider(String clusterName, RealmAwareZkClient zkClient, BaseDataAccessor baseDataAccessor) { - _clusterName = clusterName; - _accessor = new ZKHelixDataAccessor(clusterName, baseDataAccessor); - - _zkclient = zkClient; - _instanceConfigCache = null; - _clusterConfigCache = null; - _resourceConfigCache = null; - _liveInstanceCache = null; - _idealStateCache = null; - _stateModelDefinitionCache = null; - _currentStateCache = null; - } - // TODO: consolidate EV from CSs - public Map consolidateExternalViews() { - return null; - } - - // Used for dummy cache. Remove later - public void initCache(final HelixDataAccessor accessor) { - - } - - public void initCache() { - - } -} diff --git a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestCurrentStateCache.java b/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestCurrentStateCache.java deleted file mode 100644 index c92f4ce5b7..0000000000 --- a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestCurrentStateCache.java +++ /dev/null @@ -1,42 +0,0 @@ -package org.apache.helix.rest.common.dataprovider; - -/* - * 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. - */ - -import java.util.concurrent.ConcurrentHashMap; -import org.apache.helix.HelixDataAccessor; -import org.apache.helix.model.CurrentState; - - -/** - * Special cache for instances current states. - * - */ -public class RestCurrentStateCache { - - //Map> - private ConcurrentHashMap> _objCache; - - public RestCurrentStateCache() { - _objCache = new ConcurrentHashMap<>(); - } - - public void init(final HelixDataAccessor accessor) { - } -} \ No newline at end of file diff --git a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestPropertyCache.java b/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestPropertyCache.java deleted file mode 100644 index 7cc129f136..0000000000 --- a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestPropertyCache.java +++ /dev/null @@ -1,82 +0,0 @@ -package org.apache.helix.rest.common.dataprovider; - -/* - * 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. - */ - -import java.util.Collections; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import org.apache.helix.HelixDataAccessor; -import org.apache.helix.HelixProperty; -import org.apache.helix.PropertyKey; -import org.apache.helix.common.caches.PropertyCache; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - - -/** - * Class for caching simple HelixProperty objects. - * @param - */ -public class RestPropertyCache { - private static final Logger LOG = LoggerFactory.getLogger(RestPropertyCache.class); - - private ConcurrentHashMap _objCache; - private final String _propertyDescription; - - private final RestPropertyCache.PropertyCacheKeyFuncs _keyFuncs; - - public interface PropertyCacheKeyFuncs { - /** - * Get PropertyKey for the root of this type of object, used for LIST all objects - * @return property key to object root - */ - PropertyKey getRootKey(HelixDataAccessor accessor); - - /** - * Get PropertyKey for a single object of this type, used for GET single instance of the type - * @param objName object name - * @return property key to the object instance - */ - PropertyKey getObjPropertyKey(HelixDataAccessor accessor, String objName); - - /** - * Get the string to identify the object when we actually use them. It's not necessarily the - * "id" field of HelixProperty, but could have more semantic meanings of that object type - * @param obj object instance - * @return object identifier - */ - String getObjName(O obj); - } - - public RestPropertyCache(String propertyDescription, RestPropertyCache.PropertyCacheKeyFuncs keyFuncs) { - _keyFuncs = keyFuncs; - _propertyDescription = propertyDescription; - } - - public void init(final HelixDataAccessor accessor) { - _objCache = new ConcurrentHashMap<>(accessor.getChildValuesMap(_keyFuncs.getRootKey(accessor), true)); - LOG.info("Init RestPropertyCache for {}. ", _propertyDescription); - } - - public Map getPropertyMap() { - return Collections.unmodifiableMap(_objCache); - } - -} diff --git a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestServiceDataProvider.java b/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestServiceDataProvider.java deleted file mode 100644 index d880dbf7ce..0000000000 --- a/helix-rest/src/main/java/org/apache/helix/rest/common/dataprovider/RestServiceDataProvider.java +++ /dev/null @@ -1,43 +0,0 @@ -package org.apache.helix.rest.common.dataprovider; - -/* - * 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. - */ - -import java.util.HashMap; -import java.util.Map; - - -public class RestServiceDataProvider { - protected Map _clusterDataProviders ; - - - public RestServiceDataProvider() { - _clusterDataProviders = new HashMap<>(); - } - - public PerClusterDataProvider getClusterData(String clusterName) { - return _clusterDataProviders.get(clusterName); - } - - public void addClusterDataProvider(String clusterName, PerClusterDataProvider clusterData) { - _clusterDataProviders.put(clusterName, clusterData); - } - - -} diff --git a/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java b/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java index 3ab0b97f58..6b2bfff370 100644 --- a/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java +++ b/helix-rest/src/main/java/org/apache/helix/rest/server/ServerContext.java @@ -35,8 +35,6 @@ import org.apache.helix.manager.zk.ZkBaseDataAccessor; import org.apache.helix.manager.zk.ZkBucketDataAccessor; import org.apache.helix.msdcommon.exception.InvalidRoutingDataException; -import org.apache.helix.rest.common.dataprovider.HelixRestDataProviderManager; -import org.apache.helix.rest.common.dataprovider.RestServiceDataProvider; import org.apache.helix.rest.metadatastore.ZkMetadataStoreDirectory; import org.apache.helix.task.TaskDriver; import org.apache.helix.tools.ClusterSetup; @@ -82,7 +80,6 @@ public class ServerContext implements IZkDataListener, IZkChildListener, IZkStat // Create ZkBucketDataAccessor for ReadOnlyWagedRebalancer. private volatile ZkBucketDataAccessor _zkBucketDataAccessor; - private volatile HelixRestDataProviderManager _helixRestDataProviderManager; /** * Multi-ZK support @@ -296,16 +293,6 @@ public ZkBucketDataAccessor getZkBucketDataAccessor() { return _zkBucketDataAccessor; } - public HelixRestDataProviderManager getHelixRestDataProviderManager() { - if (_helixRestDataProviderManager == null) { - synchronized (this) { - if (_helixRestDataProviderManager == null) { - _helixRestDataProviderManager = new HelixRestDataProviderManager(getRealmAwareZkClient(), getHelixAdmin()); - } - } - } - return _helixRestDataProviderManager; - } public void close() { if (_zkClient != null) {