@Test public void testInvalidateXattr() throws Exception { metadataCache.invalidateXAttr("foobar", "where are you?"); assertNull(metadataCache.getXAttr("foobar", "where are you?").getFirst()); metadataCache.updateStat("foobar", getIntializedStatBuilder().build()); metadataCache.invalidateXAttr("foobar", "still not there?"); assertNull(metadataCache.getXAttr("foobar", "still not there?").getFirst()); XAttr attr = XAttr.newBuilder().setName("deleteme").setValue("bla").build(); listxattrResponse xattrs = getDummyXattrs().toBuilder().addXattrs(attr).build(); metadataCache.updateXAttrs("foobar", xattrs); assertEquals("bla", metadataCache.getXAttr("foobar", "deleteme").getFirst()); metadataCache.invalidateXAttr("foobar", "deleteme"); assertNull(metadataCache.getXAttr("foobar", "deleteme").getFirst()); }
protected void invalidateXAttr(String path, String name) { if (path.isEmpty() || !enabled) { return; } writeLock.lock(); try { MetadataCacheEntry entry = cache.get(path); if (entry == null) { return; } if (entry.getXattrs() == null) { return; } long currentTimeS = System.currentTimeMillis() / 1000; if (entry.getXattrTimeoutS() < currentTimeS) { return; } listxattrResponse.Builder xattrs = listxattrResponse.newBuilder(); for (XAttr xattr : entry.getXattrs().getXattrsList()) { if (!xattr.getName().equals(name)) { xattrs.addXattrs(xattr); } } entry.setXattrs(xattrs.build()); } finally { writeLock.unlock(); } }
MetadataCache { protected void invalidateXAttr(String path, String name) { if (path.isEmpty() || !enabled) { return; } writeLock.lock(); try { MetadataCacheEntry entry = cache.get(path); if (entry == null) { return; } if (entry.getXattrs() == null) { return; } long currentTimeS = System.currentTimeMillis() / 1000; if (entry.getXattrTimeoutS() < currentTimeS) { return; } listxattrResponse.Builder xattrs = listxattrResponse.newBuilder(); for (XAttr xattr : entry.getXattrs().getXattrsList()) { if (!xattr.getName().equals(name)) { xattrs.addXattrs(xattr); } } entry.setXattrs(xattrs.build()); } finally { writeLock.unlock(); } } }
MetadataCache { protected void invalidateXAttr(String path, String name) { if (path.isEmpty() || !enabled) { return; } writeLock.lock(); try { MetadataCacheEntry entry = cache.get(path); if (entry == null) { return; } if (entry.getXattrs() == null) { return; } long currentTimeS = System.currentTimeMillis() / 1000; if (entry.getXattrTimeoutS() < currentTimeS) { return; } listxattrResponse.Builder xattrs = listxattrResponse.newBuilder(); for (XAttr xattr : entry.getXattrs().getXattrsList()) { if (!xattr.getName().equals(name)) { xattrs.addXattrs(xattr); } } entry.setXattrs(xattrs.build()); } finally { writeLock.unlock(); } } protected  MetadataCache(long maxNumberOfEntries, long ttlS); }
MetadataCache { protected void invalidateXAttr(String path, String name) { if (path.isEmpty() || !enabled) { return; } writeLock.lock(); try { MetadataCacheEntry entry = cache.get(path); if (entry == null) { return; } if (entry.getXattrs() == null) { return; } long currentTimeS = System.currentTimeMillis() / 1000; if (entry.getXattrTimeoutS() < currentTimeS) { return; } listxattrResponse.Builder xattrs = listxattrResponse.newBuilder(); for (XAttr xattr : entry.getXattrs().getXattrsList()) { if (!xattr.getName().equals(name)) { xattrs.addXattrs(xattr); } } entry.setXattrs(xattrs.build()); } finally { writeLock.unlock(); } } protected  MetadataCache(long maxNumberOfEntries, long ttlS);  }
MetadataCache { protected void invalidateXAttr(String path, String name) { if (path.isEmpty() || !enabled) { return; } writeLock.lock(); try { MetadataCacheEntry entry = cache.get(path); if (entry == null) { return; } if (entry.getXattrs() == null) { return; } long currentTimeS = System.currentTimeMillis() / 1000; if (entry.getXattrTimeoutS() < currentTimeS) { return; } listxattrResponse.Builder xattrs = listxattrResponse.newBuilder(); for (XAttr xattr : entry.getXattrs().getXattrsList()) { if (!xattr.getName().equals(name)) { xattrs.addXattrs(xattr); } } entry.setXattrs(xattrs.build()); } finally { writeLock.unlock(); } } protected  MetadataCache(long maxNumberOfEntries, long ttlS);   }