On Wed, Apr 23, 2014 at 03:39:21PM -0400, Richard Hipp wrote:
> On Wed, Apr 23, 2014 at 3:34 PM, Steve Wills <[email protected]> wrote:
> 
> > On Wed, Apr 23, 2014 at 02:06:33PM -0400, Richard Hipp wrote:
> > > On Wed, Apr 23, 2014 at 12:20 AM, Steve Wills <[email protected]>
> > wrote:
> > > I think http://www.sqlite.org/src/info/1bbb4be1a25 addresses your
> > problem.
> > > That change is in all 3.8.* versions of SQLite.
> >
> > I am using 3.8.4.3 and was still seeing issues until I set
> > HAVE_POSIX_FALLOCATE=0 in configure.
> >
> 
> In 3.8.4.3, posix_fallocate() is only called as a hint to the filesystem
> that the database is about to grow to the indicated size.  (Many
> filesystems appreciate this hint as it helps them to avoid fragmentation.)
> Any error returned from posix_fallocate() is ignored.
> 
> So what problem are you seeing, exactly?  Is the fact that
> posix_fallocate() is being called at all causing some kind of problem for
> ZFS?

I am deploying OpenStack Swift which uses sqlite via python. I was getting an
exception like this:

"<130>container-updater: UNCAUGHT EXCEPTION
#012Traceback (most recent call last):
#012  File "/usr/local/bin/swift-container-updater", line 23, in <module>
#012    run_daemon(ContainerUpdater, conf_file, **options)
#012  File "/usr/local/lib/python2.7/site-packages/swift/common/daemon.py", 
line 110, in run_daemon
#012    klass(conf).run(once=once, **kwargs)
#012  File "/usr/local/lib/python2.7/site-packages/swift/common/daemon.py", 
line 57, in run
#012    self.run_forever(**kwargs)
#012  File "/usr/local/lib/python2.7/site-packages/swift/container/updater.py", 
line 143, in run_forever
#012    self.container_sweep(path)
#012  File "/usr/local/lib/python2.7/site-packages/swift/container/updater.py", 
line 198, in container_sweep
#012    self.process_container(os.path.join(root, file))
#012  File "/usr/local/lib/python2.7/site-packages/swift/container/updater.py", 
line 238, in process_container
#012    info['bytes_used'])
#012  File "/usr/local/lib/python2.7/site-packages/swift/container/backend.py", 
line 355, in reported
#012    ''', (put_timestamp, delete_timestamp, object_count, bytes_used))
#012  File "/usr/local/lib/python2.7/site-packages/swift/common/db.py", line 
126, in execute
#012    self.timeout, self.db_file, lambda: sqlite3.Cursor.execute(
#012  File "/usr/local/lib/python2.7/site-packages/swift/common/db.py", line 
64, in _db_timeout
#012    return call()
#012  File "/usr/local/lib/python2.7/site-packages/swift/common/db.py", line 
127, in <lambda>
#012    self, *args, **kwargs))
#012OperationalError: disk I/O error\0"

(Slightly mangled, apologies, this is from ktrace output)

Setting HAVE_POSIX_FALLOCATE=0 in configure eliminated the issue. I wish I
could give more detail, sorry.

Steve
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to