Opened 7 years ago

Last modified 6 years ago

#1263 new defect

i2psnark does not start with external hard drive (OSX)

Reported by: xixi Owned by: zzz
Priority: minor Milestone:
Component: apps/i2psnark Version: 0.9.12
Keywords: mac Cc: Zlatin Balevsky
Parent Tickets: Sensitive: no


Problem: i2psnark fails to startup when user has specified an external hard drive as the save location for torrents (i2psnark.dir in i2psnark.config). User receives HTTP 503 Service Unavailable error. i2psnark is not grabbing mount point information correctly.

i2p version 0.9.12-0
OS version OSX Mountain Lion

Problem Description:

  1. User starts i2psnark for the first time, its i2psnark.dir=i2psnark (the default).
  2. User sets an external hard drive as the torrent save location, i2psnark operates normally.
  3. User shuts down i2p and restarts the router.
  4. i2psnark will not load.

Problem Solution:

  1. i2psnark is not saving the mount point for the external hard drive correctly in i2psnark.config
  2. Example: i2psnark saves /Volumes/This? and That/torrents as my i2psnark.dir
  3. i2psnark works normally until i2p router restart
  4. i2psnark fails to start
  5. editing i2psnark.config to i2psnark.dir=/Volumes/This? and That 1/torrents works
  6. the correct mount point is given by running Disk Utility and selecting the external hard drive, which tells you the mount point

Another fix - changing back to a local directory (i2psnark.dir=i2psnark, for example) works and i2psnark launches after router restart.

No hotfixes (changes to i2psnark.config without restarting i2p router) were attempted. These might work, and speed up debugging time.


Change History (8)

comment:1 Changed 7 years ago by xixi

The filepath for external hard drive is not displaying properly in this bug report, some formatting must be changing it.

/Volumes/This and That/torrents 
/Volumes/This and That 1/torrents

That is the proper format.

comment:2 Changed 7 years ago by xixi

wrapper.log error output here - http://pastethis.i2p/show/6971/

important part:

 | Launching a JVM...
 | WrapperManager: Initializing...
 | Starting I2P 0.9.12-0
 | INFO: Native CPUID library libjcpuid-x86-osx.jnilib loaded from resource
 | INFO: Locally optimized native BigInteger library loaded from file
 | INFO: Jetty 8.1.14.v20131031 logging to I2P logs using class org.eclipse.jetty.server.Server
 | 2014-05-03 18:26:54.086:INFO:oejs.Server:jetty-8.1.14.v20131031
 | 2014-05-03 18:26:55.940:WARN:oejuc.AbstractLifeCycle:FAILED org.klomp.snark.web.I2PSnarkServlet: javax.servlet.UnavailableException: Resource base does not exist: /Volumes/This and That/torrents
Last edited 7 years ago by xixi (previous) (diff)

comment:3 Changed 7 years ago by xixi

If this is not reproducible, try the following workflow:

  1. Connect an external hard drive
  2. Ensure i2psnark.dir=i2psnark in i2psnark.config
  3. Start i2p router
  4. Start i2psnark
  5. Change i2psnark save location to a folder on external hard drive
  6. Restart router
  7. Try to restart i2psnark

If that does not reproduce, try:

  1. Repeat all the steps above (so that the i2psnark.dir entry is changed)
  2. Shutdown i2p router
  3. Eject external hard drive (without unplugging it)
  4. Remount external hard drive (from Disk Utility)
  5. Restart i2p router
  6. Try to restart i2psnark

(maybe this soft eject / re-mount changes the mount point or something)

comment:4 Changed 7 years ago by zzz

<zzz> I don'[t get it
<xixi> ?
<zzz> whats the difference between "This and That" and "This and That 1" ?
<zzz> you're saying it's dropping the " 1" ?
<zzz> it can handle two spaces but not three?
<xixi> but that is not the actual mount point of the drive
<xixi> sorry - "/Volumes/This? and That/" is what the user sees
<xixi> as the file path
<xixi> but the actual path is "/Volumes/This? and That 1/"
<xixi> because the mount point requires that extra "1" for some reason
<xixi> so there is a difference between the file system abstraction the user is aware of and what the actual mount point is
<zzz> ok I need to call in topiltzin our mac guy
<xixi> ok
<zzz> so you set it to "This and That" which is what the user sees but snark doesn't like it on restart?
<xixi> i have added additional workflow for debug
<xixi> correct

comment:5 Changed 7 years ago by zzz

don't know the root cause, but the config save handler should check for existence before saving, using the same test as the webapp resource base method uses.

comment:6 Changed 7 years ago by zzz

Cc: Zlatin Balevsky added

re: comment 5 above - We already do have a check for existence before saving, using the same test (File.isDirectory()), and refuse to change the setting if it fails, and print a message.

This appears to be the mount point moving later:

<zab> although googling makes me thing this is an OSX oddity with no real fix or even workaround possible
<zab> or "no real fix possible"
<zab> it exists in the Finder UI and may exist in the filesystem after an improper unmount
<zab> some ppl say it exists as an actual directory instead of a mount point
<zab> others recommend parsing the output of 'df'
<zab> or 'du'
<zab> or 'mount'
<zab> all fugly
<zzz> so the mount point moves later, but somehow the Finder UI hides the fact that it moved?
<zab> either that or Finder is just referencing the regular (non-mountpoint) folder with the same name as the original mountpoint
<zzz> So I don't think we can fix this. Best I can do is add a better log message.
<zab> yeah… I don't think a fix is possible either
<zzz> Is it worth you trying to reproduce it?
<zab> I didn't see anything about using a system api to find out the real mount point
<zab> I could try with an usb drive
<zab> but even if I reproduce it we're stuck with fugly workaround options
<zzz> ok I'm going to update the ticket with the above

comment:7 Changed 7 years ago by zzz

Added router log message in 09f02f697af1317a3bc45c174d4172526b8954de to be 0.9.12-16

comment:8 Changed 6 years ago by str4d

Keywords: mac added; mount point external hard drive removed
Milestone: 0.9.13
Note: See TracTickets for help on using tickets.