@Test public void testUpdateXattr() throws Exception { metadataCache.updateXAttr("foobar", "do not exist", "nothing to do"); assertNull(metadataCache.getXAttr("foobar", "do not exist").getFirst()); metadataCache.updateStat("foobar", getIntializedStatBuilder().build()); metadataCache.updateXAttr("foobar", "do not exist", "nothing to do"); assertNull(metadataCache.getXAttr("foobar", "do not exist").getFirst()); XAttr attr = XAttr.newBuilder().setName("newAttr").setValue("bla").build(); listxattrResponse xattrs = getDummyXattrs().toBuilder().addXattrs(attr).build(); metadataCache.updateXAttrs("foobar", xattrs); assertEquals("bla", metadataCache.getXAttr("foobar", "newAttr").getFirst()); metadataCache.updateXAttr("foobar", "newAttr", "blub"); assertEquals("blub", metadataCache.getXAttr("foobar", "newAttr").getFirst()); metadataCache.updateXAttr("foobar", "nonExistingXattr", "bar"); assertEquals("bar", metadataCache.getXAttr("foobar", "nonExistingXattr").getFirst()); }
protected void updateXAttr(String path, String name, String value) { 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 newXattrs = entry.getXattrs().toBuilder(); boolean nameFound = false; for (int i = 0; i < newXattrs.getXattrsList().size(); i++) { if (newXattrs.getXattrs(i).getName().equals(name)) { nameFound = true; XAttr.Builder xattr = newXattrs.getXattrs(i).toBuilder(); xattr.setValue(value); newXattrs.setXattrs(i, xattr.build()); break; } } if (!nameFound) { newXattrs.addXattrs(XAttr.newBuilder().setName(name).setValue(value).build()); } entry.setXattrs(newXattrs.build()); } finally { writeLock.unlock(); } }
MetadataCache { protected void updateXAttr(String path, String name, String value) { 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 newXattrs = entry.getXattrs().toBuilder(); boolean nameFound = false; for (int i = 0; i < newXattrs.getXattrsList().size(); i++) { if (newXattrs.getXattrs(i).getName().equals(name)) { nameFound = true; XAttr.Builder xattr = newXattrs.getXattrs(i).toBuilder(); xattr.setValue(value); newXattrs.setXattrs(i, xattr.build()); break; } } if (!nameFound) { newXattrs.addXattrs(XAttr.newBuilder().setName(name).setValue(value).build()); } entry.setXattrs(newXattrs.build()); } finally { writeLock.unlock(); } } }
MetadataCache { protected void updateXAttr(String path, String name, String value) { 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 newXattrs = entry.getXattrs().toBuilder(); boolean nameFound = false; for (int i = 0; i < newXattrs.getXattrsList().size(); i++) { if (newXattrs.getXattrs(i).getName().equals(name)) { nameFound = true; XAttr.Builder xattr = newXattrs.getXattrs(i).toBuilder(); xattr.setValue(value); newXattrs.setXattrs(i, xattr.build()); break; } } if (!nameFound) { newXattrs.addXattrs(XAttr.newBuilder().setName(name).setValue(value).build()); } entry.setXattrs(newXattrs.build()); } finally { writeLock.unlock(); } } protected  MetadataCache(long maxNumberOfEntries, long ttlS); }
MetadataCache { protected void updateXAttr(String path, String name, String value) { 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 newXattrs = entry.getXattrs().toBuilder(); boolean nameFound = false; for (int i = 0; i < newXattrs.getXattrsList().size(); i++) { if (newXattrs.getXattrs(i).getName().equals(name)) { nameFound = true; XAttr.Builder xattr = newXattrs.getXattrs(i).toBuilder(); xattr.setValue(value); newXattrs.setXattrs(i, xattr.build()); break; } } if (!nameFound) { newXattrs.addXattrs(XAttr.newBuilder().setName(name).setValue(value).build()); } entry.setXattrs(newXattrs.build()); } finally { writeLock.unlock(); } } protected  MetadataCache(long maxNumberOfEntries, long ttlS);  }
MetadataCache { protected void updateXAttr(String path, String name, String value) { 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 newXattrs = entry.getXattrs().toBuilder(); boolean nameFound = false; for (int i = 0; i < newXattrs.getXattrsList().size(); i++) { if (newXattrs.getXattrs(i).getName().equals(name)) { nameFound = true; XAttr.Builder xattr = newXattrs.getXattrs(i).toBuilder(); xattr.setValue(value); newXattrs.setXattrs(i, xattr.build()); break; } } if (!nameFound) { newXattrs.addXattrs(XAttr.newBuilder().setName(name).setValue(value).build()); } entry.setXattrs(newXattrs.build()); } finally { writeLock.unlock(); } } protected  MetadataCache(long maxNumberOfEntries, long ttlS);   }