[Pkg-cli-apps-commits] [SCM] banshee branch, master-devel, updated. debian/1.5.0-1-14-gc3d95e2
Chow Loong Jin
hyperair at gmail.com
Thu Jul 9 03:38:13 UTC 2009
The following commit has been merged in the master-devel branch:
commit 43bd2cb1b2eecfb1c639600004f668af614b221a
Author: Chow Loong Jin <hyperair at gmail.com>
Date: Wed Jul 8 22:10:58 2009 +0800
Fix for BGO #586498
* debian/patches/01_dispose-sqlite-cmd.patch:
+ Fix for BGO #586498, where Banshee leaks memory while rescanning library
* debian/patches/01_remove-bash-dep.patch:
+ Delete it for good
diff --git a/debian/changelog b/debian/changelog
index 5113b2f..f70d39b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -9,8 +9,12 @@ banshee (1.5.0-2) UNRELEASED; urgency=low
any more.
* debian/banshee.links:
+ Updated to symlink the banshee manpage to banshee-1
+ * debian/patches/01_dispose-sqlite-cmd.patch:
+ + Fix for BGO #586498, where Banshee leaks memory while rescanning library
+ * debian/patches/01_remove-bash-dep.patch:
+ + Delete it for good
- -- Chow Loong Jin <hyperair at ubuntu.com> Sat, 13 Jun 2009 12:25:11 +0800
+ -- Chow Loong Jin <hyperair at ubuntu.com> Wed, 08 Jul 2009 22:10:27 +0800
banshee (1.5.0-1) experimental; urgency=low
diff --git a/debian/patches/01_dispose-sqlite-cmd.patch b/debian/patches/01_dispose-sqlite-cmd.patch
new file mode 100644
index 0000000..c9f97f3
--- /dev/null
+++ b/debian/patches/01_dispose-sqlite-cmd.patch
@@ -0,0 +1,125 @@
+From 7d152271398d0b3166460f7fd1207b25c3b387a6 Mon Sep 17 00:00:00 2001
+From: Alexander Kojevnikov <alexander at kojevnikov.com>
+Date: Mon, 22 Jun 2009 10:57:25 +1000
+Subject: [PATCH] Dispose the SqliteCommand after it's executed (bgo#586498)
+
+Not disposing the command causes huge increases in memory usage when
+re-scanning the library.
+---
+ .../Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs | 67 ++++++++++----------
+ .../Hyena.Data.Sqlite/Tests/SqliteCommandTests.cs | 17 +++++
+ 2 files changed, 51 insertions(+), 33 deletions(-)
+
+diff --git a/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs b/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs
+index fb08d65..53fc49e 100644
+--- a/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs
++++ b/src/Libraries/Hyena/Hyena.Data.Sqlite/HyenaSqliteCommand.cs
+@@ -109,43 +109,44 @@ namespace Hyena.Data.Sqlite
+ execution_exception = null;
+ result = null;
+
+- SqliteCommand sql_command = new SqliteCommand (CurrentSqlText);
+- sql_command.Connection = connection;
+-
+- hconnection.OnExecuting (sql_command);
+-
+- try {
+- if (log_all)
+- ticks = System.Environment.TickCount;
++ using (SqliteCommand sql_command = new SqliteCommand (CurrentSqlText)) {
++ sql_command.Connection = connection;
++
++ hconnection.OnExecuting (sql_command);
++
++ try {
++ if (log_all)
++ ticks = System.Environment.TickCount;
++
++ switch (command_type) {
++ case HyenaCommandType.Reader:
++ using (SqliteDataReader reader = sql_command.ExecuteReader ()) {
++ result = new HyenaSqliteArrayDataReader (reader);
++ }
++ break;
++
++ case HyenaCommandType.Scalar:
++ result = sql_command.ExecuteScalar ();
++ break;
++
++ case HyenaCommandType.Execute:
++ default:
++ sql_command.ExecuteNonQuery ();
++ result = sql_command.LastInsertRowID ();
++ break;
++ }
+
+- switch (command_type) {
+- case HyenaCommandType.Reader:
+- using (SqliteDataReader reader = sql_command.ExecuteReader ()) {
+- result = new HyenaSqliteArrayDataReader (reader);
++ if (log_all) {
++ Log.DebugFormat ("Executed in {0}ms {1}", System.Environment.TickCount - ticks, sql_command.CommandText);
++ CommandExecutedHandler handler = CommandExecuted;
++ if (handler != null) {
++ handler (this, new CommandExecutedArgs (Text, sql_command.CommandText, null, System.Environment.TickCount - ticks));
+ }
+- break;
+-
+- case HyenaCommandType.Scalar:
+- result = sql_command.ExecuteScalar ();
+- break;
+-
+- case HyenaCommandType.Execute:
+- default:
+- sql_command.ExecuteNonQuery ();
+- result = sql_command.LastInsertRowID ();
+- break;
+- }
+-
+- if (log_all) {
+- Log.DebugFormat ("Executed in {0}ms {1}", System.Environment.TickCount - ticks, sql_command.CommandText);
+- CommandExecutedHandler handler = CommandExecuted;
+- if (handler != null) {
+- handler (this, new CommandExecutedArgs (Text, sql_command.CommandText, null, System.Environment.TickCount - ticks));
+ }
++ } catch (Exception e) {
++ Log.DebugFormat (String.Format ("Exception executing command: {0}", sql_command.CommandText), e.ToString ());
++ execution_exception = e;
+ }
+- } catch (Exception e) {
+- Log.DebugFormat (String.Format ("Exception executing command: {0}", sql_command.CommandText), e.ToString ());
+- execution_exception = e;
+ }
+
+ finished_event.Reset ();
+diff --git a/src/Libraries/Hyena/Hyena.Data.Sqlite/Tests/SqliteCommandTests.cs b/src/Libraries/Hyena/Hyena.Data.Sqlite/Tests/SqliteCommandTests.cs
+index 17a24a4..f847f1b 100644
+--- a/src/Libraries/Hyena/Hyena.Data.Sqlite/Tests/SqliteCommandTests.cs
++++ b/src/Libraries/Hyena/Hyena.Data.Sqlite/Tests/SqliteCommandTests.cs
+@@ -94,6 +94,23 @@ namespace Hyena.Data.Sqlite.Tests
+ Assert.AreEqual ("select foo from bar where id in (1,2,4) and foo not in ('foo','baz')",
+ GetGeneratedSql (cmd3, new int [] {1, 2, 4}, new string [] {"foo", "baz"}));
+ }
++
++ [Test]
++ public void ExecuteMustDisposeSqliteCommand ()
++ {
++ using(var connection = new HyenaSqliteConnection (":memory:")) {
++ bool disposed = false;
++ connection.Executing += delegate (object sender, ExecutingEventArgs args) {
++ args.Command.Disposed += delegate {
++ disposed = true;
++ };
++ };
++
++ connection.Query<int> ("SELECT 42");
++
++ Assert.IsTrue (disposed);
++ }
++ }
+
+ static PropertyInfo tf = typeof(HyenaSqliteCommand).GetProperty ("CurrentSqlText", BindingFlags.Instance | BindingFlags.NonPublic);
+ private static string GetGeneratedSql (HyenaSqliteCommand cmd, params object [] p)
+--
+1.6.3.3
+
diff --git a/debian/patches/01_remove-bash-dep.patch b/debian/patches/01_remove-bash-dep.patch
deleted file mode 100644
index aa44b9d..0000000
--- a/debian/patches/01_remove-bash-dep.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-diff -Nur -x '*.orig' -x '*~' banshee-1.4.2/src/Clients/Booter/banshee-1.in banshee-1.4.2.new/src/Clients/Booter/banshee-1.in
---- banshee-1.4.2/src/Clients/Booter/banshee-1.in 2009-01-21 04:17:04.000000000 +0800
-+++ banshee-1.4.2.new/src/Clients/Booter/banshee-1.in 2009-02-03 23:06:08.000000000 +0800
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
-
- prefix=@prefix@
- libdir=@expanded_libdir@
-@@ -20,16 +20,16 @@
- BANSHEE_DEBUG=$arg
- esac
-
-- case "x--trace=" in ("x${arg:0:8}")
-+ case "x--trace=" in ("x$(echo $arg | sed -re 's/^(.{8}).*$/\1/')")
- BANSHEE_TRACE=$arg
- esac
-
-- case "x--profile=" in ("x${arg:0:10}")
-+ case "x--profile=" in ("x$(echo $arg | sed -re 's/^(.{10}).*$/\1/')")
- BANSHEE_PROFILE=$arg
- esac
-
- case "x--redirect-log" in ("x$arg")
-- [ -z "$(pidof $BANSHEE_EXEC_NAME)" ] && BANSHEE_REDIRECT_LOG="${BANSHEE_CONFIG_DIR}/log"
-+ [ -z "$(ps -C banshee-1 -o pid=)" ] && BANSHEE_REDIRECT_LOG="${BANSHEE_CONFIG_DIR}/log"
- esac
- done
-
-@@ -39,13 +39,13 @@
- fi
-
- # Finally - environment is set up, time to run our beloved
--exec_args="-a $BANSHEE_EXEC_NAME mono $MONO_OPTIONS $MONO_EXE $BANSHEE_DEBUG"
-+exec_args="mono $MONO_OPTIONS $MONO_EXE $BANSHEE_DEBUG"
-
- if [ -z "$BANSHEE_REDIRECT_LOG" ]; then
- exec $exec_args "$@"
- else
- mkdir -p `dirname "$BANSHEE_REDIRECT_LOG"`
-- (echo "exec $exec_args " "$@"; echo; exec $exec_args "$@") &> $BANSHEE_REDIRECT_LOG
-+ (echo "exec $exec_args " "$@"; echo; exec $exec_args "$@") 2>&1 > $BANSHEE_REDIRECT_LOG
- fi
-
-
diff --git a/debian/patches/series b/debian/patches/series
index d14b129..a23f86b 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
+01_dispose-sqlite-cmd.patch
02_system-equalizer.patch
99_ltmain_as-needed.patch
--
banshee
More information about the Pkg-cli-apps-commits
mailing list