diff options
| author | Joseph Fernandes <josferna@redhat.com> | 2015-09-18 19:57:54 +0530 |
|---|---|---|
| committer | Dan Lambright <dlambrig@redhat.com> | 2015-10-08 12:00:31 -0700 |
| commit | 58d1a9be562630bd1ed8af3e496ca05e087adece (patch) | |
| tree | 5feb32ff9e6ad3c38d87759589426471a4044671 /libglusterfs/src/gfdb/gfdb_sqlite3.h | |
| parent | 81d4aa18b3a1cdad0e0e8df43fe4c8c141c06618 (diff) | |
tier/ctr: Solution for db locks for tier migrator and ctr using sqlite version less than 3.7 i.e rhel 6.7
Problem: On RHEL 6.7, we have sqlite version 3.6.2 which doesnt support
WAL journaling mode, as this journaling mode is only available in sqlite 3.7 and above.
As a result we cannot have to progreses concurrently accessing sqlite, without
running into db locks! Well WAL is also need for performace on CTR side.
Solution: This solution is to use CTR db connection for doing queries when WAL mode is
absent. i,e tier migrator will send sync_op ipc calls to CTR, which in turn will
do the query and create/update the query file suggested by tier migrator.
Pending: Well this solution will stop the db locks but the performance is still an issue for CTR.
We are developing an in-Memory Transaction Log (iMeTaL) which will help boost the CTR
performance by doing in memory udpates on the IO path and later flush the updates to
the db in a batch/segment flush.
Change-Id: Ie3149643ded159234b5cc6aa6cf93b9022c2f124
BUG: 1240577
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Signed-off-by: Dan Lambright <dlambrig@redhat.com>
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Reviewed-on: http://review.gluster.org/12191
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Luis Pabon <lpabon@redhat.com>
Diffstat (limited to 'libglusterfs/src/gfdb/gfdb_sqlite3.h')
| -rw-r--r-- | libglusterfs/src/gfdb/gfdb_sqlite3.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_sqlite3.h b/libglusterfs/src/gfdb/gfdb_sqlite3.h index 7bcba5a54bd..2051d75fd8e 100644 --- a/libglusterfs/src/gfdb/gfdb_sqlite3.h +++ b/libglusterfs/src/gfdb/gfdb_sqlite3.h @@ -281,6 +281,34 @@ int gf_sqlite3_find_recently_changed_files_freq (void *db_conn, int gf_sqlite3_clear_files_heat (void *db_conn); +/* Function to extract version of sqlite db + * Input: + * void *db_conn : Sqlite connection + * char **version : the version is extracted as a string and will be stored in + * this variable. The freeing of the memory should be done by + * the caller. + * Return: + * On success return the lenght of the version string that is + * extracted. + * On failure return -1 + * */ +int gf_sqlite3_version (void *db_conn, char **version); + +/* Function to extract PRAGMA or setting from sqlite db + * Input: + * void *db_conn : Sqlite connection + * char *pragma_key : PRAGMA or setting to be extracted + * char **pragma_value : the value of the PRAGMA or setting that is + * extracted. This function will allocate memory + * to pragma_value. The caller should free the memory + * Return: + * On success return the lenght of the pragma/setting value that is + * extracted. + * On failure return -1 + * */ +int gf_sqlite3_pragma (void *db_conn, char *pragma_key, char **pragma_value); + void gf_sqlite3_fill_db_operations (gfdb_db_operations_t *gfdb_db_ops); + #endif |
