[sql] Enable HAVE_USLEEP for more platforms.
HAVE_USLEEP affects SQLite's sleep implementation, which is used when SQLite waits for a lock to clear. Browser databases are generally uncontended, but this case could happen for WebDatabase in the renderer. BUG=none Review URL: https://codereview.chromium.org/827523004 Cr-Commit-Position: refs/heads/master@{#312460}
This commit is contained in:
@ -112,4 +112,21 @@ TEST_F(SQLiteFeaturesTest, FTS3_Prefix) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USE_SYSTEM_SQLITE)
|
||||||
|
// Verify that Chromium's SQLite is compiled with HAVE_USLEEP defined. With
|
||||||
|
// HAVE_USLEEP, SQLite uses usleep() with millisecond granularity. Otherwise it
|
||||||
|
// uses sleep() with second granularity.
|
||||||
|
TEST_F(SQLiteFeaturesTest, UsesUsleep) {
|
||||||
|
base::TimeTicks before = base::TimeTicks::Now();
|
||||||
|
sqlite3_sleep(1);
|
||||||
|
base::TimeDelta delta = base::TimeTicks::Now() - before;
|
||||||
|
|
||||||
|
// It is not impossible for this to be over 1000 if things are compiled the
|
||||||
|
// right way. But it is very unlikely, most platforms seem to be around
|
||||||
|
// <TBD>.
|
||||||
|
LOG(ERROR) << "Milliseconds: " << delta.InMilliseconds();
|
||||||
|
EXPECT_LT(delta.InMilliseconds(), 1000);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
10
third_party/sqlite/BUILD.gn
vendored
10
third_party/sqlite/BUILD.gn
vendored
@ -45,6 +45,15 @@ source_set("sqlite") {
|
|||||||
"SQLITE_NO_SYNC",
|
"SQLITE_NO_SYNC",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
if (is_posix) {
|
||||||
|
defines += [
|
||||||
|
# Allow xSleep() call on Unix to use usleep() rather than sleep(), so it
|
||||||
|
# will have microsecond precision. Should only affect contended databases
|
||||||
|
# via the busy callback. Browser profile databases are mostly exclusive,
|
||||||
|
# but renderer databases may allow for contention.
|
||||||
|
"HAVE_USLEEP=1",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
include_dirs = [
|
include_dirs = [
|
||||||
"amalgamation",
|
"amalgamation",
|
||||||
@ -69,7 +78,6 @@ source_set("sqlite") {
|
|||||||
libs = [ "CoreFoundation.framework" ]
|
libs = [ "CoreFoundation.framework" ]
|
||||||
} else if (is_android) {
|
} else if (is_android) {
|
||||||
defines += [
|
defines += [
|
||||||
"HAVE_USLEEP=1",
|
|
||||||
"SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
|
"SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576",
|
||||||
"SQLITE_DEFAULT_AUTOVACUUM=1",
|
"SQLITE_DEFAULT_AUTOVACUUM=1",
|
||||||
"SQLITE_TEMP_STORE=3",
|
"SQLITE_TEMP_STORE=3",
|
||||||
|
11
third_party/sqlite/sqlite.gyp
vendored
11
third_party/sqlite/sqlite.gyp
vendored
@ -33,6 +33,16 @@
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
['os_posix == 1', {
|
||||||
|
'defines': [
|
||||||
|
# Allow xSleep() call on Unix to use usleep() rather than sleep().
|
||||||
|
# Microsecond precision is better than second precision. Should
|
||||||
|
# only affect contended databases via the busy callback. Browser
|
||||||
|
# profile databases are mostly exclusive, but renderer databases may
|
||||||
|
# allow for contention.
|
||||||
|
'HAVE_USLEEP=1',
|
||||||
|
],
|
||||||
|
}],
|
||||||
['use_system_sqlite', {
|
['use_system_sqlite', {
|
||||||
'type': 'none',
|
'type': 'none',
|
||||||
'direct_dependent_settings': {
|
'direct_dependent_settings': {
|
||||||
@ -132,7 +142,6 @@
|
|||||||
}],
|
}],
|
||||||
['OS == "android"', {
|
['OS == "android"', {
|
||||||
'defines': [
|
'defines': [
|
||||||
'HAVE_USLEEP=1',
|
|
||||||
'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
|
'SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576',
|
||||||
'SQLITE_DEFAULT_AUTOVACUUM=1',
|
'SQLITE_DEFAULT_AUTOVACUUM=1',
|
||||||
'SQLITE_TEMP_STORE=3',
|
'SQLITE_TEMP_STORE=3',
|
||||||
|
Reference in New Issue
Block a user