r21327 - in /desktop/experimental/libsoup2.4/debian: changelog patches/01_improve_cookies_performance.patch

kov at users.alioth.debian.org kov at users.alioth.debian.org
Fri Sep 11 17:53:25 UTC 2009


Author: kov
Date: Fri Sep 11 17:53:25 2009
New Revision: 21327

URL: http://svn.debian.org/wsvn/pkg-gnome/?sc=1&rev=21327
Log:
Patch from upstream to handle cookies with less writes to disk (Closes: ##530964)

Added:
    desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch
Modified:
    desktop/experimental/libsoup2.4/debian/changelog

Modified: desktop/experimental/libsoup2.4/debian/changelog
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/libsoup2.4/debian/changelog?rev=21327&op=diff
==============================================================================
--- desktop/experimental/libsoup2.4/debian/changelog [utf-8] (original)
+++ desktop/experimental/libsoup2.4/debian/changelog [utf-8] Fri Sep 11 17:53:25 2009
@@ -1,3 +1,11 @@
+libsoup2.4 (2.27.92-2) experimental; urgency=low
+
+  * debian/patches/01_improve_cookies_performance.patch:
+  - patch from upstream to avoid writing too much to the disk when
+    handling cookies (Closes: #530964)
+
+ -- Gustavo Noronha Silva <kov at debian.org>  Fri, 11 Sep 2009 14:52:33 -0300
+
 libsoup2.4 (2.27.92-1) experimental; urgency=low
 
   [ Emilio Pozuelo Monfort ]

Added: desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch
URL: http://svn.debian.org/wsvn/pkg-gnome/desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch?rev=21327&op=file
==============================================================================
--- desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch (added)
+++ desktop/experimental/libsoup2.4/debian/patches/01_improve_cookies_performance.patch [utf-8] Fri Sep 11 17:53:25 2009
@@ -1,0 +1,131 @@
+commit cc3d838689f5d7828add2ee1830e0e783d235115
+Author: Gustavo Noronha Silva <gustavo.noronha at collabora.co.uk>
+Date:   Tue Sep 8 09:38:45 2009 -0300
+
+    Keep database handle open, and avoid synchronous writes
+    
+    The synchronous writes behavior is the safest, but has very poor
+    performance, and causes UI hangs for users of soup.
+    
+    Bug #584522
+
+diff --git a/libsoup/soup-cookie-jar-sqlite.c b/libsoup/soup-cookie-jar-sqlite.c
+index 5ec9a75..b7bb579 100644
+--- a/libsoup/soup-cookie-jar-sqlite.c
++++ b/libsoup/soup-cookie-jar-sqlite.c
+@@ -4,6 +4,7 @@
+  *
+  * Using danw's soup-cookie-jar-text as template
+  * Copyright (C) 2008 Diego Escalante Urrelo
++ * Copyright (C) 2009 Collabora Ltd.
+  */
+ 
+ #ifdef HAVE_CONFIG_H
+@@ -37,7 +38,7 @@ enum {
+ 
+ typedef struct {
+ 	char *filename;
+-
++	sqlite3 *db;
+ } SoupCookieJarSqlitePrivate;
+ 
+ #define SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), SOUP_TYPE_COOKIE_JAR_SQLITE, SoupCookieJarSqlitePrivate))
+@@ -67,6 +68,9 @@ finalize (GObject *object)
+ 
+ 	g_free (priv->filename);
+ 
++	if (priv->db)
++		sqlite3_close (priv->db);
++
+ 	G_OBJECT_CLASS (soup_cookie_jar_sqlite_parent_class)->finalize (object);
+ }
+ 
+@@ -252,24 +256,43 @@ try_exec:
+ 		}
+ 	}
+ }
+-					 
+-static void
+-load (SoupCookieJar *jar)
++
++/* Follows sqlite3 convention; returns TRUE on error */
++static gboolean
++open_db (SoupCookieJar *jar)
+ {
+ 	SoupCookieJarSqlitePrivate *priv =
+ 		SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE (jar);
+ 
+-	sqlite3 *db;
++	char *error = NULL;
+ 
+-	if (sqlite3_open (priv->filename, &db)) {
+-		sqlite3_close (db);
++	if (sqlite3_open (priv->filename, &priv->db)) {
++		sqlite3_close (priv->db);
++		priv->db = NULL;
+ 		g_warning ("Can't open %s", priv->filename);
+-		return;
++		return TRUE;
++	}
++
++	if (sqlite3_exec (priv->db, "PRAGMA synchronous = OFF", NULL, NULL, &error)) {
++		g_warning ("Failed to execute query: %s", error);
++		sqlite3_free (error);
+ 	}
+ 
+-	exec_query_with_try_create_table (db, QUERY_ALL, callback, jar);
++	return FALSE;
++}
++
++static void
++load (SoupCookieJar *jar)
++{
++	SoupCookieJarSqlitePrivate *priv =
++		SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE (jar);
++
++	if (priv->db == NULL) {
++		if (open_db (jar))
++			return;
++	}
+ 
+-	sqlite3_close (db);
++	exec_query_with_try_create_table (priv->db, QUERY_ALL, callback, jar);
+ }
+ 
+ static void
+@@ -279,20 +302,18 @@ changed (SoupCookieJar *jar,
+ {
+ 	SoupCookieJarSqlitePrivate *priv =
+ 		SOUP_COOKIE_JAR_SQLITE_GET_PRIVATE (jar);
+-	sqlite3 *db;
+ 	char *query;
+ 
+-	if (sqlite3_open (priv->filename, &db)) {
+-		sqlite3_close (db);
+-		g_warning ("Can't open %s", priv->filename);
+-		return;
++	if (priv->db == NULL) {
++		if (open_db (jar))
++			return;
+ 	}
+ 
+ 	if (old_cookie) {
+ 		query = sqlite3_mprintf (QUERY_DELETE,
+ 					 old_cookie->name,
+ 					 old_cookie->domain);
+-		exec_query_with_try_create_table (db, query, NULL, NULL);
++		exec_query_with_try_create_table (priv->db, query, NULL, NULL);
+ 		sqlite3_free (query);
+ 	}
+ 
+@@ -308,9 +329,7 @@ changed (SoupCookieJar *jar,
+ 					 expires,
+ 					 new_cookie->secure,
+ 					 new_cookie->http_only);
+-		exec_query_with_try_create_table (db, query, NULL, NULL);
++		exec_query_with_try_create_table (priv->db, query, NULL, NULL);
+ 		sqlite3_free (query);
+ 	}
+-
+-	sqlite3_close (db);
+ }




More information about the pkg-gnome-commits mailing list