xyuanlu commented on code in PR #2612:
URL: https://github.com/apache/helix/pull/2612#discussion_r1318031208


##########
meta-client/src/main/java/org/apache/helix/metaclient/api/MetaClientCacheInterface.java:
##########
@@ -0,0 +1,56 @@
+package org.apache.helix.metaclient.api;
+
+/*
+ * 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.
+ */
+public interface MetaClientCacheInterface<T> extends MetaClientInterface<T> {
+    enum  CacheState {
+        /**
+         * When cache is closed or recently created and hasn't been started 
yet.
+         */
+        UNINITIALIZED,
+        /**
+         * When a change happens in the underlying metadata storage, the
+         * cache must be updated accordingly. In this state, the cache is
+         * being rebuilt based on the changes that the listener picks up.
+         */
+        PROCESSING_CHANGES,
+        /**
+         * The cache is up-to-date with the key from the underlying
+         * metadata storage and no changes are being processed.
+         */
+        UP_TO_DATE
+    }
+
+    /**
+     * Start the cache. The cache is not started automatically. You must call 
this method.
+     * Whether the cache is populated immediately or not is defined when 
crating the cache client.
+     */
+    void startCache();
+
+    /**
+     * Close / end the cache.
+     */
+    void closeCache();
+
+    /**
+     * Rebuild the entries that exist in the current cache. Will log an error 
and return null
+     * if the cache is close / hasn't started yet.
+     */
+    void rebuildCache();

Review Comment:
   I feel like this API is a bit confusing. Any existing use case now? I am 
open to discussion. 



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to