Menu

How to Quickly Crash RSSOwl with a Large Feed Set

Developers
Ron Todd
2013-07-24
2013-09-30
  • Ron Todd

    Ron Todd - 2013-07-24

    I’ve been trying, without success, to get RSSOwl to function properly (not crash) when it is subscribed to over 2000 news feeds. When it fails, I generally see an “org.apache.lucene.store.LockReleaseFailedException” error, followed by many “java.lang.NullPointerException”. To help get to the bottom of this, I’ve generated a simple test case, using a small subset of the feeds that Julien Genestoux at Superfeedr put together ( http://blog.superfeedr.com/top-feeds-list/ ). My hope is that someone familiar with the internals of RSSOwl will be able to replicate this problem, troubleshoot it, and fix it. Many thanks in advance.

    OBSERVATION
    • This problem appears quickly (generally within a minute) if one cancels out of the initial RSSOwl “Welcome” screen and imports a large OPML file from File -> Import
    • It appears slowly (perhaps in 15 minutes) if one uses the procedure below; or if one imports the same set of feeds from the “Welcome” window
    • One has to be cautious about keeping the periodic update (defaulted to 30 minute intervals) from beginning before the new feeds have completed their first update (genodeftest, on 2013-04-30, diagnosed that there will be a memory leak if new worker threads are spawned before their counterparts have exited)


    (Slow) procedure to replicate failure on large number of feeds (paths assume one is running under Windows)

    1. Set memory allocation to 1024 MB
      a. Take ownership of “Program Files (x86)\RSSOwl\RSSOwl.ini”
      b. Set your permissions to “Full Control”
      c. Edit line 3 to say “-Xmx1024m”, and save
    2. Start RSSOwl on a fresh folder
      a. I invoked through a desktop shortcut with this Target:
      "C:\Program Files (x86)\RSSOwl\RSSOwl.exe" -data D:\RSSOwl\Test\
      b. On the Welcome screen, select “Do not Import Feeds”
      c. Finish
      d. Finish
      e. Tools -> Preferences -> Feeds -> Automatically update the feeds every -> 30 DAYS (effectively turning updates off)
      f. OK
      g. File -> Import -> Import Feeds from a file or Website > Set path to:
      https://dl.dropboxusercontent.com/u/88894155/first_2500_test_feeds.opml
      h. Next
      i. Finish
    3. Observe the size of the log file (it is in the data directory specified in step 2.a; as the “.log” file under “.metadata”)
      a. It should start at 1k
      b. When it starts growing rapidly, examine it. I get an “org.apache.lucene.store.LockReleaseFailedException “ (see below), which is followed by a plethora of “java.lang.NullPointerException”
      c. The application is now hosed (but usually will restart OK and run for a time before crashing again)

    !ENTRY org.rssowl.core 4 2 2013-07-24 11:39:11.917
    !MESSAGE Problems occurred when invoking code from plug-in: "org.rssowl.core".
    !STACK 0
    org.rssowl.core.persist.service.PersistenceException: https://dl.dropboxusercontent.com/u/88894155/first_2500_test_feeds.opml: failed to delete D:\RSSOwl\Test.metadata.plugins\org.rssowl.core\lucene-d786ca1adfc767698acd01135e9e65ad-n-write.lock
    at org.rssowl.core.internal.persist.search.Indexer.dispose(Indexer.java:554)
    at org.rssowl.core.internal.persist.search.Indexer.flushIfNecessary(Indexer.java:254)
    at org.rssowl.core.internal.persist.search.ModelSearchImpl.getCurrentSearcher(ModelSearchImpl.java:489)
    at org.rssowl.core.internal.persist.search.ModelSearchImpl.searchNewsByLinks(ModelSearchImpl.java:291)
    at org.rssowl.core.internal.ApplicationServiceImpl.updateStateOfUnsavedNewNews(ApplicationServiceImpl.java:646)
    at org.rssowl.core.internal.ApplicationServiceImpl.access$4(ApplicationServiceImpl.java:624)
    at org.rssowl.core.internal.ApplicationServiceImpl$2.run(ApplicationServiceImpl.java:320)
    at org.eclipse.core.runtime.SafeRunner.run(Unknown Source)
    at org.rssowl.core.internal.ApplicationServiceImpl.handleFeedReload(ApplicationServiceImpl.java:317)
    at org.rssowl.ui.internal.Controller$3.run(Controller.java:868)
    at org.rssowl.core.util.JobQueue$2$1.run(JobQueue.java:329)
    at org.eclipse.core.runtime.SafeRunner.run(Unknown Source)
    at org.rssowl.core.util.JobQueue$2.run(JobQueue.java:326)
    at org.eclipse.core.internal.jobs.Worker.run(Unknown Source)
    Caused by: org.apache.lucene.store.LockReleaseFailedException: failed to delete D:\RSSOwl\Test.metadata.plugins\org.rssowl.core\lucene-d786ca1adfc767698acd01135e9e65ad-n-write.lock
    at org.apache.lucene.store.NativeFSLock.release(NativeFSLockFactory.java:311)
    at org.apache.lucene.index.IndexWriter.closeInternal(IndexWriter.java:1259)
    at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:1186)
    at org.apache.lucene.index.IndexWriter.close(IndexWriter.java:1154)
    at org.rssowl.core.internal.persist.search.Indexer.dispose(Indexer.java:552)
    ... 13 more

     
  • sg2002

    sg2002 - 2013-09-30

    Hello.

    Your problem is possibly memory related. 32 bit java is a bit limited with the amount memory it could use - 1GB is usually pushing it.

    Try building 64 bit version of RSSOwl yourself, of try the build I posted here:
    https://sourceforge.net/p/rssowl/discussion/296910/thread/14f5562e/

     

Log in to post a comment.