You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Julian Reschke (Jira)" <ji...@apache.org> on 2020/07/26 12:58:00 UTC

[jira] [Resolved] (OAK-8912) Version garbage collector is not working if documents exceeded 100000

     [ https://issues.apache.org/jira/browse/OAK-8912?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Julian Reschke resolved OAK-8912.
---------------------------------
    Resolution: Cannot Reproduce

> Version garbage collector is not working if documents exceeded 100000
> ---------------------------------------------------------------------
>
>                 Key: OAK-8912
>                 URL: https://issues.apache.org/jira/browse/OAK-8912
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: documentmk
>            Reporter: Ankush Nagapure
>            Priority: Major
>         Attachments: exception.txt
>
>
> Oak version - 1.10.2, PostgreSQL 10.7 (10.7), using driver: PostgreSQL JDBC Driver 42.2.2 (42.2).
> *Actual :*
> After below code run, if document collectlimit exceeded 100000, it throws exception attached in .txt
>   {color:#0747a6}public static void runVersionGC() { {color}
>  {color:#0747a6}          log.info("Running garbage collection for DocumentNodeStore");{color}
>  {color:#0747a6}          try {{color}
>  {color:#0747a6}                 final VersionGCOptions versionGCOptions = new VersionGCOptions();{color}
>  {color:#0747a6}                *versionGCOptions.withCollectLimit(1000000);*{color}
>  {color:#0747a6}                *documentNodeStore.getVersionGarbageCollector().setOptions(versionGCOptions);*{color}
>  {color:#0747a6}                 log.info("versionGCOptions.collectLimit : " + versionGCOptions.collectLimit);{color}
>  {color:#0747a6}                documentNodeStore.getVersionGarbageCollector().gc(0, TimeUnit.DAYS);{color}
>  {color:#0747a6}           } catch (final DocumentStoreException e) {{color}
>  {color:#0747a6}             //{color}
>  {color:#0747a6}     }{color}
> Below is the code to create repository and get documentNodeStore object for version garbage collection.
>    {color:#0747a6}private static Repository createRepo(final Map<String, String> dbDetails){color}
>  {color:#0747a6}             throws DataStoreException {{color}
>  {color:#0747a6}       try {{color}
>  {color:#0747a6}             final RDBOptions options ={color}
>  {color:#0747a6}                new DBOptions().tablePrefix(dbDetails.get(DB_TABLE_PREFIX)).dropTablesOnClose({color}
>  {color:#0747a6}                   false);{color}
>  {color:#0747a6}            final DataSource ds ={color}
>  {color:#0747a6}            RDBDataSourceFactory.forJdbcUrl({color}
>  {color:#0747a6}                 dbDetails.get("dbURL"),{color}
>  {color:#0747a6}                 dbDetails.get("dbUser"),{color}
>  {color:#0747a6}                 dbDetails.get("dbPassword"));{color}
>  {color:#0747a6}          final Properties properties = buildS3Properties(dbDetails);{color}
>  {color:#0747a6}          final S3DataStore s3DataStore = buildS3DataStore(properties);{color}
>  {color:#0747a6}          final DataStoreBlobStore dataStoreBlobStore = new DataStoreBlobStore(s3DataStore);{color}
>  {color:#0747a6}          final Whiteboard wb = new DefaultWhiteboard();{color}
> {color:#0747a6}         bapRegistration ={color}
>  {color:#0747a6}                         wb.register(BlobAccessProvider.class,(BlobAccessProvider)             {color}
> {color:#0747a6}                           dataStoreBlobStore,properties);{color}
> {color:#0747a6}         *documentNodeStore =*{color}
>  {color:#0747a6}                *new RDBDocumentNodeStoreBuilder()*{color}
>  {color:#0747a6}                    *.setBlobStore(dataStoreBlobStore)*{color}
>  {color:#0747a6}                    *.setBundlingDisabled(true)*{color}
>  {color:#0747a6}                    *.setRDBConnection(ds, options)*{color}
>  {color:#0747a6}                    *.build();*{color}
> {color:#0747a6}           repository = new Jcr(documentNodeStore).with(wb).createRepository();{color}
>  {color:#0747a6}          return repository;{color}
>  {color:#0747a6}      } catch (final DataStoreException e) {{color}
>  {color:#0747a6}               log.error("S3 Connection could not be created." + e);{color}
>  {color:#0747a6}              throw new DataStoreException("S3 Connection could not be created");{color}
>  {color:#0747a6}      }{color}
>  {color:#0747a6}  }{color}
> {color:#172b4d}Even after setting collectLimit in code, still it is taking 100000 as limit.{color}
> {color:#172b4d}Expected :{color}
> versionGCOptions.collectLimit should set to custom value to avoid DocumentStoreException or solution to avoid DocumentStoreException if documents exceeded to 100000.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)