Hi Yuan,
> how can we tell the real “identifier” and “type” options in effect to users?
If I understand correctly these are specified in DDL table options by users.
For example:
CREATE TABLE DimTable (…) WITH (
...
“cache.identifier” = “guava”,
“cache.type” = “LRU”
);
> Does MetricNames.java contain all metric names?
I don’t think there's a rule that all metric names should be in MetricNames
class, but it would be great to aggregate these constants into a unified place.
Cheers,
Qingsheng
> On Mar 8, 2022, at 10:22, [email protected] wrote:
>
> Hi Qingsheng Ren,
> Thanks for your feedback.
>
>
>> 1. It looks like “identifier” and “type” are options of cache instead of
>> metrics. I think they are finalized once the cache is created so maybe it’s
>> not quite helpful to report them to the metric system.
>
>
> Maybe it's not quite appropriate to report them to the metric system, but how
> can we tell the real “identifier” and “type” options in effect to users?
>
>
>
>
>> 2. Some metrics can be aggregated simply in metric systems, like loadCount =
>> loadSuccessCount + loadExceptionCount, so maybe we can just keep fundamental
>> metrics (like loadSuccessCount and loadExceptionCount) to avoid redundancy.
>
>
> I agree with you. I have removed these redundant metrics.
>
>
>> 3. About the interface of CacheMetricGroup I think it would be easier for
>> cache implementers to use if we expose wrapped function instead of let users
>> provide gauges directly.
>
>
> Thanks for your advice, they are helpful and I have adjusted it. I have a
> question about it. Does MetricNames.java
> <https://github.com/apache/flink/blob/master/flink-runtime%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fflink%2Fruntime%2Fmetrics%2FMetricNames.java>
> contain all metric names? Should I put the cache metric names here?
>
>
>
>
>
>
> Best regards,
> Yuan
>
>
>
>
>
> At 2022-03-07 16:55:18, "Qingsheng Ren" <[email protected]> wrote:
>> Hi Yuan,
>>
>> Thanks for raising this discussion! I believe this will be very helpful for
>> lookup table developers, and standardizing metrics would be essential for
>> users to tuning their systems.
>>
>> Here’s some thoughts in my mind:
>>
>> 1. It looks like “identifier” and “type” are options of cache instead of
>> metrics. I think they are finalized once the cache is created so maybe it’s
>> not quite helpful to report them to the metric system.
>>
>> 2. Some metrics can be aggregated simply in metric systems, like loadCount =
>> loadSuccessCount + loadExceptionCount, so maybe we can just keep fundamental
>> metrics (like loadSuccessCount and loadExceptionCount) to avoid redundancy.
>>
>> 3. About the interface of CacheMetricGroup I think it would be easier for
>> cache implementers to use if we expose wrapped function instead of let users
>> provide gauges directly. For example:
>>
>> public interface CacheMetricGroup extends MetricGroup {
>> // Mark a cache hit
>> public void markCacheHit();
>> // Mark a cache miss
>> public void recordCacheMiss();
>> ...
>> }
>>
>> You can check SourceReaderMetricGroup[1] and its implementation[2] as a
>> reference.
>>
>> Hope these would be helpful!
>>
>> Best regards,
>>
>> Qingsheng Ren
>>
>> [1]
>> https://github.com/apache/flink/blob/master/flink-metrics/flink-metrics-core/src/main/java/org/apache/flink/metrics/groups/SourceReaderMetricGroup.java
>> [2]
>> https://github.com/apache/flink/blob/master/flink-runtime/src/main/java/org/apache/flink/runtime/metrics/groups/InternalSourceReaderMetricGroup.java
>>
>>
>>> On Mar 7, 2022, at 16:00, [email protected] wrote:
>>>
>>> Hi devs,
>>>
>>>
>>> I would like to propose a discussion thread about abstraction of Cache
>>> LookupFunction with metrics for cache in connectors to make cache out of
>>> box for connector developers. There are multiple LookupFunction
>>> implementations in individual connectors [1][2][3][4] so far.
>>> At the same time, users can monitor cache in LookupFunction by adding
>>> uniform cache metrics to optimize tasks or troubleshoot.
>>>
>>>
>>> I have posted an issue about this, see
>>> <https://issues.apache.org/jira/browse/FLINK-25409>, and made a brief
>>> design
>>> <https://docs.google.com/document/d/1L2eo7VABZBdRxoRP_wPvVwuvTZOV9qrN9gEQxjhSJOc/edit?usp=sharing>.
>>>
>>>
>>> Looking forward to your feedback, thanks.
>>>
>>>
>>> Best regards,
>>> Yuan
>>>
>>>
>>>
>>>
>>> [1]
>>> https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-jdbc/src/main/java/org/apache/flink/connector/jdbc/table/JdbcRowDataLookupFunction.java
>>> [2]
>>> https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-hive/src/main/java/org/apache/flink/connectors/hive/FileSystemLookupFunction.java
>>> [3]
>>> https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-hbase-base/src/main/java/org/apache/flink/connector/hbase/source/HBaseRowDataLookupFunction.java
>>> [4]
>>> https://github.com/apache/flink/blob/master/flink-connectors/flink-connector-hbase-2.2/src/main/java/org/apache/flink/connector/hbase2/source/HBaseRowDataAsyncLookupFunction.java