From 9809a6f2f17b3d698bafe25fb5dec4f2b21101e1 Mon Sep 17 00:00:00 2001 From: Datacratic Operations Date: Fri, 27 Mar 2015 11:54:09 -0400 Subject: [PATCH 1/2] ML::filter_ostream: added debugging output for the handling of deferred failures --- utils/filter_streams.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/utils/filter_streams.cc b/utils/filter_streams.cc index 75ce7c6..7f8d82b 100644 --- a/utils/filter_streams.cc +++ b/utils/filter_streams.cc @@ -32,6 +32,7 @@ #include #include "jml/arch/exception.h" #include "jml/arch/format.h" +#include "jml/arch/threads.h" #include "string_functions.h" #include #include @@ -119,8 +120,9 @@ filter_ostream:: try { close(); } - catch (...) { - cerr << "~filter_ostream: ignored exception\n"; + catch (const std::exception & exc) { + cerr << ("~filter_ostream: ignored exception: " + + string(exc.what()) + "\n"); } } @@ -427,9 +429,11 @@ void filter_ostream:: close() { + bool wasClosed(true); // closed when "close" is called if (stream) { boost::iostreams::flush(*stream); boost::iostreams::close(*stream); + wasClosed = false; } exceptions(ios::goodbit); rdbuf(0); @@ -437,6 +441,11 @@ close() sink.reset(); options.clear(); if (deferredFailure) { + if (wasClosed) { + cerr << (to_string(getpid()) + "/" + to_string(gettid()) + + ": filter_ostream: a deferred failure has been reported" + " for a closed stream\n"); + } deferredFailure = false; exceptions(ios::badbit | ios::failbit); setstate(ios::badbit); @@ -488,8 +497,9 @@ filter_istream:: try { close(); } - catch (...) { - cerr << "~filter_istream: ignored exception\n"; + catch (const std::exception & exc) { + cerr << ("~filter_istream: ignored exception: " + + string(exc.what()) + "\n"); } } From e34cf54f68bca6df533f23deaa2037c4b8055eee Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Mon, 27 Apr 2015 12:00:55 -0400 Subject: [PATCH 2/2] pouet --- utils/filter_streams.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/filter_streams.cc b/utils/filter_streams.cc index 4a1577f..e767507 100644 --- a/utils/filter_streams.cc +++ b/utils/filter_streams.cc @@ -485,7 +485,7 @@ close() stream.reset(); sink.reset(); options.clear(); - if (hasDeferredFailure) { + if (hasDeferredFailure()) { if (wasClosed) { cerr << (to_string(getpid()) + "/" + to_string(gettid()) + ": filter_ostream: a deferred failure has been reported"