summaryrefslogtreecommitdiffstats
path: root/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1
diff options
context:
space:
mode:
Diffstat (limited to 'external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1')
-rw-r--r--external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.151
1 files changed, 51 insertions, 0 deletions
diff --git a/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1 b/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1
new file mode 100644
index 000000000..e569fccdc
--- /dev/null
+++ b/external/firebird/0001-Avoid-hangup-in-SS-when-error-happens-at-system-atta.patch.1
@@ -0,0 +1,51 @@
+From 36a7a2634669075be3294a1d075524a0b6f80962 Mon Sep 17 00:00:00 2001
+From: hvlad <hvlad@users.sourceforge.net>
+Date: Wed, 17 Aug 2016 15:45:30 +0300
+Subject: [PATCH] Avoid hangup in SS when error happens at system attachment
+ initialization time
+
+---
+ src/jrd/cch.cpp | 7 ++++++-
+ src/jrd/vio.cpp | 5 +++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/src/jrd/cch.cpp b/src/jrd/cch.cpp
+index 35ea096..643cf4d 100644
+--- a/src/jrd/cch.cpp
++++ b/src/jrd/cch.cpp
+@@ -2963,10 +2963,15 @@ static THREAD_ENTRY_DECLARE cache_writer(THREAD_ENTRY_PARAM arg)
+ iscDbLogStatus(dbb->dbb_filename.c_str(), &status_vector);
+ }
+
+- bcb->bcb_flags &= ~(BCB_cache_writer | BCB_writer_start);
++ bcb->bcb_flags &= ~BCB_cache_writer;
+
+ try
+ {
++ if (bcb->bcb_flags & BCB_writer_start)
++ {
++ bcb->bcb_flags &= ~BCB_writer_start;
++ bcb->bcb_writer_init.release();
++ }
+ bcb->bcb_writer_fini.release();
+ }
+ catch (const Firebird::Exception& ex)
+diff --git a/src/jrd/vio.cpp b/src/jrd/vio.cpp
+index a8cf0fc..3d35a27 100644
+--- a/src/jrd/vio.cpp
++++ b/src/jrd/vio.cpp
+@@ -4988,6 +4988,11 @@ static THREAD_ENTRY_DECLARE garbage_collector(THREAD_ENTRY_PARAM arg)
+ try
+ {
+ // Notify the finalization caller that we're finishing.
++ if (dbb->dbb_flags & DBB_gc_starting)
++ {
++ dbb->dbb_flags &= ~DBB_gc_starting;
++ dbb->dbb_gc_init.release();
++ }
+ dbb->dbb_gc_fini.release();
+ }
+ catch (const Firebird::Exception& ex)
+--
+2.9.3
+