| Bug #38843 | Falcon does not start if datadir is located on home directory on Solaris | ||
|---|---|---|---|
| Submitted: | 18 Aug 2008 11:01 | Modified: | 18 Oct 2008 16:50 |
| Reporter: | Olav Sandstaa | ||
| Status: | Closed | ||
| Category: | Server: Falcon | Severity: | S3 (Non-critical) |
| Version: | 6.0.6 | OS: | Sun Solaris |
| Assigned to: | Vladislav Vaintroub | Target Version: | 6.0.7 |
| Triage: | D2 (Serious) | ||
[18 Aug 2008 11:01]
Olav Sandstaa
[18 Aug 2008 11:09]
Olav Sandstaa
It seems that this problem is triggered when we in IO::createPath() line 2785 in
storage/falcon/IO.cpp do the MKDIR call on my home directory, i.e.:
MKDIR("/home/os136802")
The existing code expects and handles that this should return error number EEXIST. On
Solaris 10 instead ENOSYS ("Unsupported file system operation") for this case, probably
due to my home directory is automounted.
Would a better approach than try to create all directories in the path be to first check
if the directory existed and only if it did not already exist, then try to create it?
[18 Aug 2008 11:18]
Philip Stoev
Olav, Maybe the server creates the datadir by the time the Falcon initialization is called? So Falcon does not have to create anything?
[18 Aug 2008 22:17]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/51893 2788 Vladislav Vaintroub 2008-08-18 Bug#38843 Falcon does not start if datadir is located on home directory on Solaris Problem Falcon tries to create all directories recursively before creating a file While trying to create a directory structure, IO::createPath runs onto Solaris bug. mkdir returns ENOSYS instead of EEXIST on an existing path, if if it happens to be NFS automounted root dir. Fix: 1) IO::createPath - Workaround the bug by handling ENOSYS like EEXIST. We do not expect any other OS to return ENOSYS(not supported) for mkdir(). 2) As Falcon can always rely on datadir to exist, enclose all current occurences of IO::createPath() into #ifndef FALCONDB. It is possibly needed for Netfrastructure, so the change is safe.
[28 Aug 2008 6:36]
Bugs System
Pushed into 6.0.7-alpha (revid:vvaintroub@mysql.com-20080818201715-rajvo3ragweycolr) (version source revid:vvaintroub@mysql.com-20080827094944-sh582y3m7duhzrpj) (pib:3)
[13 Sep 2008 23:25]
Bugs System
Pushed into 6.0.7-alpha (revid:vvaintroub@mysql.com-20080818201715-rajvo3ragweycolr) (version source revid:hakan@mysql.com-20080725175322-8wgujj5xuzrjz3ke) (pib:3)
[18 Oct 2008 16:50]
Jon Stephens
Documented in the 6.0.7 changelog as follows:
On Solaris platforms, when the server was built with Falcon support and
the data directory set in user's home directory, mysql_install_db
failed.
