gaborkaszab commented on code in PR #13560: URL: https://github.com/apache/iceberg/pull/13560#discussion_r2588300430
########## core/src/main/java/org/apache/iceberg/metrics/CacheMetrics.java: ########## @@ -0,0 +1,51 @@ +/* + * 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 org.apache.iceberg.metrics; + +import com.github.benmanes.caffeine.cache.stats.CacheStats; +import org.immutables.value.Value; + [email protected] +public abstract class CacheMetrics { + public abstract long hitCount(); + + public abstract long missCount(); + + public abstract long loadSuccessCount(); + + public abstract long loadFailureCount(); + + public abstract long totalLoadTime(); + + public abstract long evictionCount(); + + public abstract long evictionWeight(); Review Comment: Good point, for different cache implementations probably not all these fields are available. I checked [EhCache stats](https://www.ehcache.org/apidocs/3.10.0/org/ehcache/core/statistics/CacheStatistics.html) and apparently maybe 3 of the above metrics are included there: hit count, miss count, eviction count. I see two way from here: 1) Make this CacheMetrics class as narrow as it could serve the common fields from different cache implementations. I think this way the offered list of stats would be very narrow, maybe hit and miss count only. 2) We could make the metrics objects instead of primitives (e.g. Long) and then if the cache implementation doesn't support some of the metrics we could leave it null. This way we have the flexibility to support more cache implementations and not to be too narrow. WDYT @pvary ? -- 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]
