summaryrefslogtreecommitdiffstats
path: root/libglusterfs/src/gfdb/gfdb_data_store_types.h
diff options
context:
space:
mode:
authorJoseph Fernandes <josferna@redhat.com>2015-09-18 19:57:54 +0530
committerDan Lambright <dlambrig@redhat.com>2015-10-08 12:00:31 -0700
commit58d1a9be562630bd1ed8af3e496ca05e087adece (patch)
tree5feb32ff9e6ad3c38d87759589426471a4044671 /libglusterfs/src/gfdb/gfdb_data_store_types.h
parent81d4aa18b3a1cdad0e0e8df43fe4c8c141c06618 (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_data_store_types.h')
-rw-r--r--libglusterfs/src/gfdb/gfdb_data_store_types.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/libglusterfs/src/gfdb/gfdb_data_store_types.h b/libglusterfs/src/gfdb/gfdb_data_store_types.h
index 2d3c5ede99c..ab8b7945d2c 100644
--- a/libglusterfs/src/gfdb/gfdb_data_store_types.h
+++ b/libglusterfs/src/gfdb/gfdb_data_store_types.h
@@ -651,6 +651,13 @@ typedef int
typedef int (*gfdb_clear_files_heat_t)(void *db_conn);
+typedef int (*gfdb_get_db_version_t)(void *db_conn,
+ char **version);
+
+typedef int (*gfdb_get_db_setting_t)(void *db_conn,
+ char *param_key,
+ char **param_value);
+
/*Data structure holding all the above plugin function pointers*/
typedef struct gfdb_db_operations {
@@ -666,6 +673,8 @@ typedef struct gfdb_db_operations {
gfdb_find_recently_changed_files_freq_t
find_recently_changed_files_freq_op;
gfdb_clear_files_heat_t clear_files_heat_op;
+ gfdb_get_db_version_t get_db_version;
+ gfdb_get_db_setting_t get_db_setting;
} gfdb_db_operations_t;
/*******************************************************************************
@@ -709,6 +718,7 @@ typedef struct gfdb_connection {
gf_msg (comp_name, GF_LOG_ERROR, 0,\
LG_MSG_SET_PARAM_FAILED, "Failed setting %s "\
"to params dictionary", param_key);\
+ data_destroy (data);\
goto error;\
};\
} while (0)