此提交添加了一个执行器端点,该端点列出了每个上下文和缓存管理器的缓存,并提供了删除操作来清除缓存。由于统计信息是通过指标端点公开的,因此它们不包括在内
关闭#2625
此提交添加了一个执行器端点,该端点列出了每个上下文和缓存管理器的缓存,并提供了删除操作来清除缓存。由于统计信息是通过指标端点公开的,因此它们不包括在内
关闭#2625
很好,谢谢。
参见#2625
@snicoll 感谢您的评论。我从 liquibaseEndpoint 复制了一些内容,因此可以处理多个上下文。
我已将端点重命名为CachesEndpoint
.我删除了对复杂上下文结构的处理。我删除了多余的配置元数据。
我没有将cacheManager设为a,@Selector
因为将其作为queryParam允许删除所有cacheManager上的所有缓存。
也许添加一种从该Cache
区域删除单个条目的方法是个好主意?最好还列出给定缓存区域中的所有条目,但当前的 spring 缓存 API 不允许这样做(jcache 允许这样做)。
@ptahchiev 请不要扩大此 PR 的范围。列出缓存的内容肯定不在议程上。 PR 合并后,我们可以完善支持(或者您可以在合并后提交一份)。
添加了空检查并重新设置为 master
我们已经讨论了一些事情,并且想要不同的输出格式。我们希望列出具有名称的缓存,当它们是具有相同名称的两个缓存时,可能会添加对缓存管理器的引用。我不喜欢添加引用惩罚的想法CacheManager
,因为绝大多数应用程序只有一个引用,而且我也不喜欢在那里使用 bean 名称的想法。
我们还讨论了该POST
操作应该只删除给定名称的缓存,并能够在发生冲突时进一步限定(但是,IMO,这是不应该发生的极端情况)。
我还不确定如何构建读取操作,因此我们需要多考虑一下。我们将使用此 PR 作为这项工作的基础。
我也不喜欢在那里使用 bean 名称的想法。
如果我们需要在两个 CacheManager 中出现重复名称的情况下限定缓存,我想没有什么可以区分缓存了
如何将缓存逐出的链接渲染到响应中,并在缓存名称前面加上前缀以防出现歧义?缺点是:它需要端点的 mvc 扩展,并且在使用 MXBean 的情况下没有阐明用法
{
"caches": [
{
"name": "manager-foo/ambiguousName",
"_links": {
"evict": "/actuator/caches/manager-foo/ambiguousName"
}
},
{
"name": "manager-bar/ambiguousName",
"_links": {
"evict": "/actuator/caches/manager-bar/ambiguousName"
}
},
{
"name": "uniqueName",
"_links": {
"evict": "/actuator/caches/manager-bar/uniqueName"
}
}
]
}
...如果缓存名称包含它/
需要在链接中编码...
@joshiste 我想到的更多的是一个可以限定缓存的属性
{
"caches": [
{
"name": "ambiguousName",
"cacheManager": "manager-foo"
},
{
"name": "ambiguousName",
"cacheManager": "manager-bar"
},
{
"name": "uniqueName",
"cacheManager": "manager-foo"
}
]
}
这些链接在那里也不太受欢迎(如果我们想这样做,我们应该在端点 API 级别一致地这样做,因为这些链接对于 JMX 来说是无用且无关的)。
我已经按照您的建议修改了读取操作的输出。
@joshiste 感谢您的公关。在审查时,我重新设计并显着更改了最初的提案,请参阅 fb8a5a9 了解更多详细信息。
耶!感谢合并!