[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16784636#comment-16784636 ] Julian Reschke commented on OAK-8051: - trunk: [r1854701|http://svn.apache.org/r1854701] [r1854455|http://svn.apache.org/r1854455] 1.10: [r1854862|http://svn.apache.org/r1854862] > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Assignee: Julian Reschke >Priority: Major > Labels: candidate_oak_1_6, candidate_oak_1_8 > Fix For: 1.12, 1.11.0, 1.10.2 > > Attachments: OAK-8051.diff, OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.MultiGenerationMap.readValue(MultiGenerationMap.java:71) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16784399#comment-16784399 ] Thomas Mueller commented on OAK-8051: - Sorry... the changes look good to me! > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Assignee: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12, 1.11.0 > > Attachments: OAK-8051.diff, OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.MultiGenerationMap.readValue(MultiGenerationMap.java:71) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16782721#comment-16782721 ] Julian Reschke commented on OAK-8051: - trunk: [r1854701|http://svn.apache.org/r1854701] [r1854455|http://svn.apache.org/r1854455] > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Assignee: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12, 1.11.0 > > Attachments: OAK-8051.diff, OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.MultiGenerationMap.readValue(MultiGenerationMap.java:71) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16779207#comment-16779207 ] Julian Reschke commented on OAK-8051: - https://issues.apache.org/jira/secure/attachment/12960355/OAK-8051.diff - adds the change proposed by [~tmueller] - adds to the Javadoc - adds to the existing test, inspecting the WARN level log [~tmueller] - can you review? > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff, OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16777822#comment-16777822 ] Julian Reschke commented on OAK-8051: - I think we should be more clear about the contract (enhance the Javadoc). Also, shouldn't we try to write a unit test? > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.MultiGenerationMap.readValue(MultiGenerationMap.java:71) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16777819#comment-16777819 ] Thomas Mueller commented on OAK-8051: - [~reschke] is it OK if I commit my patch? > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.MultiGenerationMap.readValue(MultiGenerationMap.java:71) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.asyncReadIfPresent(NodeCache.java:147) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16774920#comment-16774920 ] Thomas Mueller commented on OAK-8051: - > The patch broke the test (that's why I @ignored it) because the map wouldn't > be constructed in the first place Yes. > I still think that would be a clearer contract, but I accept things are the > way they are. The current contract is that you can use the CacheMap even if the underlying storage is broken - it's just that the CacheMap won't actually cache things. The idea is that upstream code doesn't have to care. > how we can construct a test that replicates the scenario for which the ticket > was opened. It might not be easy. Possibly by locking the file manually? You would need to open the cache, close it, see which files are there, lock them manually (using FileChannel.lock I think), and then try opening. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16774188#comment-16774188 ] Julian Reschke commented on OAK-8051: - > I just argue that my patch is slightly better, as it can deal with interrupt > exceptions happening early on. Your patch would fail for this case, breaking > the test case. The patch broke the test (that's why I @ignored it) because the map wouldn't be constructed in the first place, not because of the handling of interrupt exceptions (right?). I still think that would be a clearer contract, but I accept things are the way they are. Now the good question is how we can construct a test that replicates the scenario for which the ticket was opened. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16774151#comment-16774151 ] Thomas Mueller commented on OAK-8051: - > Actually what's wrong is that if the first attempt to open the map fails, the > object fill have a null map and will not be in status closed, thus causing an > NPE when calling get(). Yes, I agree. > Confusion in itself is problematic Sure. It's good to get rid of the confusion (NPE log messages, strange behavior). I just argue that my patch is slightly better, as it can deal with interrupt exceptions happening early on. Your patch would fail for this case, breaking the test case. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16773819#comment-16773819 ] Julian Reschke commented on OAK-8051: - bq. It would be better if 10 retries are attempted immediately in the constructor of CacheMap, instead of later on when trying to use the CacheMap It probably wouldn't hurt, but also wouldn't have helped in this case (where the cache file was locked). > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.get(CacheMap.java:87) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16773818#comment-16773818 ] Julian Reschke commented on OAK-8051: - bq. The "error during open can lead to incomplete initialization" is correct, but incomplete initialization isn't terrible in this case. It's just not nice. It depends on whether the code is designed to handle this case. Right now this doesn't seem to be the case. bq. "subsequent NPEs" is true, however the NPEs are not problematic; they don't cause failures. They are just confusing. Confusion in itself is problematic due to people seeing the NPEs and trying to figure out what is wrong. If the system works as designed, there should be either no log message, or a log message that is actually readable. In this case however I see the NPE causing failure to instantiate the DocumentNodeStore. See second stack trace above. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16773800#comment-16773800 ] Thomas Mueller commented on OAK-8051: - I think the issue description, while technically correct, is misleading: "PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs" The "error during open can lead to incomplete initialization" is correct, but incomplete initialization isn't terrible in this case. It's just not nice. "subsequent NPEs" is true, however the NPEs are not problematic; they don't cause failures. They are just confusing. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16773796#comment-16773796 ] Thomas Mueller commented on OAK-8051: - As far as I see, your patch is basically just this: {noformat} Index: oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/CacheMap.java public CacheMap(MapFactory factory, String name, Builder builder) { this.factory = factory; this.name = name; this.builder = builder; openMap(); +if (this.map == null) { +throw new IllegalStateException("Could not open map for '" + name + "'"); +} } Index: oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/CacheTest.java @Test +@Ignore("OAK-8051") public void recoverIfCorrupt() throws Exception { FileUtils.deleteDirectory(new File("target/cacheTest")); new File("target/cacheTest").mkdirs(); {noformat} The test fails because CacheMap cannot be instantiated. The idea behind CacheMap reopening attempts is that: * (A) it tries 10 time to reopen if there was an exception (like: interrupted exception, caused by Thread.interrupt) * (B) if reopening failed 10 times, then it goes in a "closed" mode where it's still usable but doesn't do anything (doesn't cache anything) Your patch breaks both (A) and (B), in case Thread.interrupt was called slightly before opening CacheMap. What's wrong with the current code is that: * A NPE is logged in CacheMap, which can be confusing * It would be better if 10 retries are attempted immediately in the constructor of CacheMap, instead of later on when trying to use the CacheMap Here a patch that should do this (a test case is needed): {noformat} svn diff -x --ignore-all-space Index: src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/CacheMap.java === --- src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/CacheMap.java (revision 1853143) +++ src/main/java/org/apache/jackrabbit/oak/plugins/document/persistentCache/CacheMap.java (working copy) @@ -46,7 +46,14 @@ this.name = name; this.builder = builder; openMap(); +// OAK-8051: if opening failed, immediately try to re-open, +// until either the the map is closed, or open +for (int i = 0; map == null && !closed; i++) { +if (map == null) { +reopen(i, null); } +} +} {noformat} So the changes are: * if map is null, retry until either map is not null or it's closed * no NPE is logged > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Labels: candidate_oak_1_10, candidate_oak_1_6, > candidate_oak_1_8, patch-available > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16771133#comment-16771133 ] Julian Reschke commented on OAK-8051: - Proposed patch: https://issues.apache.org/jira/secure/attachment/12959130/OAK-8051.diff This enforces that {{map != null}} upon construction of {{CacheMap}}. However, this causes {{CacheTest.recoverIfCorrupt()}} to fail. It appears that this test tries to verify that only a limited number of operations is attempted upon failures. This now fails because the {{CacheMap}} cannot be instantiated in the first place. Not sure what to do with this. [~tmueller], [~mreutegg] - feedback appreciated. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Fix For: 1.12 > > Attachments: OAK-8051.diff > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStore(DocumentNodeStoreService.java:508) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.registerNodeStoreIfPossible(DocumentNodeStoreService.java:430) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.activate(DocumentNodeStoreService.java:414) > {noformat} > and then > {noformat} > 22.01.2019 08:45:16.808 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap > Re-opening map PREV_DOCUMENT > java.lang.NullPointerException: null > at >
[jira] [Commented] (OAK-8051) PersistentCache: error during open can lead to incomplete initialization and subsequent NPEs
[ https://issues.apache.org/jira/browse/OAK-8051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16771014#comment-16771014 ] Julian Reschke commented on OAK-8051: - (still looking at 1.6 source...) So, in {noformat} 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could not open the map java.lang.NullPointerException: null at org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) {noformat} a {{null}} return value is catched and logged as warning, and then a {{null}} is returned. {{CacheMap.openMap()}}: {noformat} void openMap() { openCount = factory.reopenStoreIfNeeded(openCount); Map m2 = factory.openMap(name, builder); if (m2 != null) { map = m2; } } {noformat} handles the {{null}} return value, and then does not update {{this.map}}. The constructor: {noformat} public CacheMap(MapFactory factory, String name, Builder builder) { this.factory = factory; this.name = name; this.builder = builder; openMap(); } {noformat} thus passes with {{this.map == null}}, causing the {{CacheMap}} to be in an invalid state. > PersistentCache: error during open can lead to incomplete initialization and > subsequent NPEs > > > Key: OAK-8051 > URL: https://issues.apache.org/jira/browse/OAK-8051 > Project: Jackrabbit Oak > Issue Type: Bug > Components: documentmk >Affects Versions: 1.6.6 >Reporter: Julian Reschke >Priority: Major > Fix For: 1.12 > > > Seen in the wild (in 1.6.6): > {noformat} > 22.01.2019 08:45:13.153 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the store _path_/cache-4.data > java.lang.IllegalStateException: The file is locked: nio:_path_/cache-4.data > [1.4.193/7] > at org.h2.mvstore.DataUtils.newIllegalStateException(DataUtils.java:765) > at org.h2.mvstore.FileStore.open(FileStore.java:168) > at org.h2.mvstore.MVStore.(MVStore.java:348) > at org.h2.mvstore.MVStore$Builder.open(MVStore.java:2923) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openStore(PersistentCache.java:288) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.createMapFactory(PersistentCache.java:361) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.(PersistentCache.java:210) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.getPersistentCache(DocumentMK.java:1232) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1211) > {noformat} > Later on: > {noformat} > 22.01.2019 08:45:13.155 *WARN* [http-/0.0.0.0:80-3] > org.apache.jackrabbit.oak.plugins.document.persistentCache.MapFactory Could > not open the map > java.lang.NullPointerException: null > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache$1.openMap(PersistentCache.java:335) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.openMap(CacheMap.java:135) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.(CacheMap.java:48) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.openMap(PersistentCache.java:468) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.addGeneration(NodeCache.java:115) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.initGenerationCache(PersistentCache.java:452) > at > org.apache.jackrabbit.oak.plugins.document.persistentCache.PersistentCache.wrap(PersistentCache.java:443) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildCache(DocumentMK.java:1214) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildPrevDocumentsCache(DocumentMK.java:1182) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.buildNodeDocumentCache(DocumentMK.java:1189) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.initialize(RDBDocumentStore.java:798) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:212) > at > org.apache.jackrabbit.oak.plugins.document.rdb.RDBDocumentStore.(RDBDocumentStore.java:224) > at > org.apache.jackrabbit.oak.plugins.document.DocumentMK$Builder.setRDBConnection(DocumentMK.java:757) > at >