[jira] [Updated] (OAK-7389) MongoBlobStore does not update timestamp for already existing blobs
[ https://issues.apache.org/jira/browse/OAK-7389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Amit Jain updated OAK-7389: --- Component/s: (was: documentmk) blob > MongoBlobStore does not update timestamp for already existing blobs > --- > > Key: OAK-7389 > URL: https://issues.apache.org/jira/browse/OAK-7389 > Project: Jackrabbit Oak > Issue Type: Bug > Components: blob >Affects Versions: 1.2.14, 1.4.20, 1.8.2, 1.6.11 >Reporter: Amit Jain >Assignee: Amit Jain >Priority: Critical > Fix For: 1.2.30 > > > MongoBlobStore uses uses the {{insert}} call and ignores any exceptions which > means any existing value won't be updated. > {code:java} > @Override > protected void storeBlock(byte[] digest, int level, byte[] data) throws > IOException { > String id = StringUtils.convertBytesToHex(digest); > cache.put(id, data); > // Check if it already exists? > MongoBlob mongoBlob = new MongoBlob(); > mongoBlob.setId(id); > mongoBlob.setData(data); > mongoBlob.setLevel(level); > mongoBlob.setLastMod(System.currentTimeMillis()); > // TODO check the return value > // TODO verify insert is fast if the entry already exists > try { > getBlobCollection().insertOne(mongoBlob); > } catch (DuplicateKeyException e) { > // the same block was already stored before: ignore > } catch (MongoException e) { > if (e.getCode() == DUPLICATE_KEY_ERROR_CODE) { > // the same block was already stored before: ignore > } else { > throw new IOException(e.getMessage(), e); > } > } > } > {code} > > The above would cause data loss in DSGC if there are updates to the blob > blocks which are re-surrected (stored again at the time of DSGC) because the > timestamp would never have been modified. > > cc/ [~tmueller], [~mreutegg], [~chetanm], [~catholicon] -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (OAK-7389) MongoBlobStore does not update timestamp for already existing blobs
[ https://issues.apache.org/jira/browse/OAK-7389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Amit Jain updated OAK-7389: --- Fix Version/s: 1.2.30 > MongoBlobStore does not update timestamp for already existing blobs > --- > > Key: OAK-7389 > URL: https://issues.apache.org/jira/browse/OAK-7389 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.2.14, 1.4.20, 1.8.2, 1.6.11 >Reporter: Amit Jain >Priority: Critical > Fix For: 1.2.30 > > > MongoBlobStore uses uses the {{insert}} call and ignores any exceptions which > means any existing value won't be updated. > {code:java} > @Override > protected void storeBlock(byte[] digest, int level, byte[] data) throws > IOException { > String id = StringUtils.convertBytesToHex(digest); > cache.put(id, data); > // Check if it already exists? > MongoBlob mongoBlob = new MongoBlob(); > mongoBlob.setId(id); > mongoBlob.setData(data); > mongoBlob.setLevel(level); > mongoBlob.setLastMod(System.currentTimeMillis()); > // TODO check the return value > // TODO verify insert is fast if the entry already exists > try { > getBlobCollection().insertOne(mongoBlob); > } catch (DuplicateKeyException e) { > // the same block was already stored before: ignore > } catch (MongoException e) { > if (e.getCode() == DUPLICATE_KEY_ERROR_CODE) { > // the same block was already stored before: ignore > } else { > throw new IOException(e.getMessage(), e); > } > } > } > {code} > > The above would cause data loss in DSGC if there are updates to the blob > blocks which are re-surrected (stored again at the time of DSGC) because the > timestamp would never have been modified. > > cc/ [~tmueller], [~mreutegg], [~chetanm], [~catholicon] -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Updated] (OAK-7389) MongoBlobStore does not update timestamp for already existing blobs
[ https://issues.apache.org/jira/browse/OAK-7389?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Amit Jain updated OAK-7389: --- Affects Version/s: (was: 1.2.28) 1.2.14 > MongoBlobStore does not update timestamp for already existing blobs > --- > > Key: OAK-7389 > URL: https://issues.apache.org/jira/browse/OAK-7389 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.2.14, 1.4.20, 1.8.2, 1.6.11 >Reporter: Amit Jain >Priority: Critical > Fix For: 1.2.30 > > > MongoBlobStore uses uses the {{insert}} call and ignores any exceptions which > means any existing value won't be updated. > {code:java} > @Override > protected void storeBlock(byte[] digest, int level, byte[] data) throws > IOException { > String id = StringUtils.convertBytesToHex(digest); > cache.put(id, data); > // Check if it already exists? > MongoBlob mongoBlob = new MongoBlob(); > mongoBlob.setId(id); > mongoBlob.setData(data); > mongoBlob.setLevel(level); > mongoBlob.setLastMod(System.currentTimeMillis()); > // TODO check the return value > // TODO verify insert is fast if the entry already exists > try { > getBlobCollection().insertOne(mongoBlob); > } catch (DuplicateKeyException e) { > // the same block was already stored before: ignore > } catch (MongoException e) { > if (e.getCode() == DUPLICATE_KEY_ERROR_CODE) { > // the same block was already stored before: ignore > } else { > throw new IOException(e.getMessage(), e); > } > } > } > {code} > > The above would cause data loss in DSGC if there are updates to the blob > blocks which are re-surrected (stored again at the time of DSGC) because the > timestamp would never have been modified. > > cc/ [~tmueller], [~mreutegg], [~chetanm], [~catholicon] -- This message was sent by Atlassian JIRA (v7.6.3#76005)