过期策略不能在网格8.8.9中工作



我有一个问题,而使用gridgain 8.8.9。当我指定CityKey时,我有CityKey和City对象。COUNTRYCODE作为关联键,过期策略无效。我将1000条数据放入缓存,键为CityKey对象,值为City对象,过期时间为1分钟。1分钟后,只删除了2个数据,然后我在visor中使用cache -scan命令,所有的数据都被删除了,但是如果我使用cache命令,数据将一直存在。如果我删除@ affinitykeymap注释上的CityKey。COUNTRYCODE,过期策略可能有效。我用gridgain 8.8.18做了同样的测试,过期策略一直有效。所以我想知道这是否是gridgain 8.8.9中的一个bug,如果不是bug,原因是什么,如何解决。

CityKey

import org.apache.ignite.cache.affinity.AffinityKeyMapped;
public class CityKey {
/** */
private int ID;
/** */
@AffinityKeyMapped
private String COUNTRYCODE;
public CityKey(int ID, String COUNTRYCODE) {
this.ID = ID;
this.COUNTRYCODE = COUNTRYCODE;
}
public CityKey() {
}
public int getID() {
return ID;
}
public void setID(int ID) {
this.ID = ID;
}
@Override
public String toString() {
return "CityKey{" +
"ID=" + ID +
", COUNTRYCODE='" + COUNTRYCODE + ''' +
'}';
}
public String getCOUNTRYCODE() {
return COUNTRYCODE;
}
public void setCOUNTRYCODE(String COUNTRYCODE) {
this.COUNTRYCODE = COUNTRYCODE;
}
public void assssssss(String sssss){
System.out.println(sssss);
}
}

城市

public class City {
private String NAME;
private String DISTRICT;
private int POPULATION;
public City(String NAME, String DISTRICT, int POPULATION) {
this.NAME = NAME;
this.DISTRICT = DISTRICT;
this.POPULATION = POPULATION;
}
public String getNAME() {
return NAME;
}
public void setNAME(String NAME) {
this.NAME = NAME;
}
public String getDISTRICT() {
return DISTRICT;
}
public void setDISTRICT(String DISTRICT) {
this.DISTRICT = DISTRICT;
}
public int getPOPULATION() {
return POPULATION;
}
public void setPOPULATION(int POPULATION) {
this.POPULATION = POPULATION;
}
@Override
public String toString() {
return "City{" +
"NAME='" + NAME + ''' +
", DISTRICT='" + DISTRICT + ''' +
", POPULATION=" + POPULATION +
'}';
}
}

GridGainTest

public class GridGainTest {
public static void main(String[] args) throws Exception {
ClientConfiguration clientConfiguration = new ClientConfiguration().setAddresses("127.0.0.1:10800");
IgniteClient client = Ignition.startClient(clientConfiguration);
// client.destroyCache("testcity");
ClientCacheConfiguration cacheConfiguration = new ClientCacheConfiguration().setName("testcity");
cacheConfiguration.setExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.MINUTES, 1)));
ClientCache<CityKey, City> city = client.getOrCreateCache(cacheConfiguration);
for (int i = 1000000; i < 1001000; ++i) {
City value = new City("henan", "a place", 1000000);
CityKey key = new CityKey(i, "hn" + i);
city.put(key, value);
System.out.println(i);
}
client.close();
}
}

这是网格增益遮阳板的输出。

visor> cache

Time of the snapshot: 2022-05-12 15:24:33
|    Name(@)    |    Mode     | Nodes | Total entries (Heap / Off-heap) | Primar
y entries (Heap / Off-heap) |   Hits    |  Misses   |   Reads   |  Writes   |
| testcity(@c0) | PARTITIONED | 1     | 1000 (0 / 1000)                 | min: 1
000 (0 / 1000)              | min: 0    | min: 0    | min: 0    | min: 0    |
|               |             |       |                                 | avg: 1
000.00 (0.00 / 1000.00)     | avg: 0.00 | avg: 0.00 | avg: 0.00 | avg: 0.00 |
|               |             |       |                                 | max: 1
000 (0 / 1000)              | max: 0    | max: 0    | max: 0    | max: 0    |
+-------------------------------------------------------------------------------
----------------------------------------------------------------------------+
Use "-a" flag to see detailed statistics.
visor> cache
Time of the snapshot: 2022-05-12 15:26:50
|    Name(@)    |    Mode     | Nodes | Total entries (Heap / Off-heap) | Primar
y entries (Heap / Off-heap) |   Hits    |  Misses   |   Reads   |  Writes   |
| testcity(@c0) | PARTITIONED | 1     | 998 (0 / 998)                   | min: 9
98 (0 / 998)                | min: 0    | min: 0    | min: 0    | min: 0    |
|               |             |       |                                 | avg: 9
98.00 (0.00 / 998.00)       | avg: 0.00 | avg: 0.00 | avg: 0.00 | avg: 0.00 |
|               |             |       |                                 | max: 9
98 (0 / 998)                | max: 0    | max: 0    | max: 0    | max: 0    |
+-------------------------------------------------------------------------------
----------------------------------------------------------------------------+
Use "-a" flag to see detailed statistics.
visor> cache -scan
Time of the snapshot: 2022-05-12 15:28:42
+===============================================================+
| # |    Name(@)    |    Mode     |   Size (Heap / Off-heap)    |
+===============================================================+
| 0 | testcity(@c0) | PARTITIONED | min: 998 (0 / 998)          |
|   |               |             | avg: 998.00 (0.00 / 998.00) |
|   |               |             | max: 998 (0 / 998)          |
+---------------------------------------------------------------+

Choose cache number ('c' to cancel) [c]: 0
Cache: testcity is empty

很可能是已知问题。这可能与由于错误的关联和赋值而导致的对墓碑的不当处理有关。尝试最新的GridGain 8.8.18。问题是GG-34306 -修复了清除墓碑的问题.

最新更新