> On Jan. 31, 2014, 10:58 a.m., Gordon Sim wrote: > > /trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp, line 548 > > <https://reviews.apache.org/r/17563/diff/1/?file=457081#file457081line548> > > > > Is this always an 'error'? What about with federation when a failover > > exchange doesn't exist? Not a big deal, but if we can avoid logging those > > sorts of expected things at error its better. However if this is the > > cleanest way to log some important error that can't be logged elsewhere, > > then feel free to ignore this.
No its not an error, in the HA case either. The reason I added it is that you get "channel not attached" which is logged as an error, but there's nothing to explain *why* the channel isn't attached - so it's hard to tell if it is a real error or something benign (as in the HA or federation case). Perhaps I should make both "incoming execution exception" _and_ "channel not attached" into info messages. Sound reasonable? - Alan ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/17563/#review33312 ----------------------------------------------------------- On Jan. 30, 2014, 11:14 p.m., Alan Conway wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/17563/ > ----------------------------------------------------------- > > (Updated Jan. 30, 2014, 11:14 p.m.) > > > Review request for qpid and Gordon Sim. > > > Bugs: QPID-5528 > https://issues.apache.org/jira/browse/QPID-5528 > > > Repository: qpid > > > Description > ------- > > QPID-5528: HA Clean up error messages around rolled-back transactions. > > A simple transaction test on a 3 node cluster generates a lot of errors and > rollback notices in the > broker logs even though the test code never rolls back a transaction. E.g. > > qpid-cluster-benchmark -b 20.0.20.200 -n1 -m 1000 -q3 -s2 -r2 > --send-arg=--tx --send-arg=10 --receive-arg=--tx --receive-arg=10 > > The errors are caused by queues being deleted while backup brokers are using > them. This happens a lot in the transaction test because a transactional > session > must create a new transaction when the previous one closes. When the session > closes the open transaction is rolled back automatically. Thus there is almost > always an empty transaction that is created then immediately rolled back at > the > end of the session. Backup brokers may still be in the process of subscribing > to > the transaction's replication queue at this point, causing (harmlesss) errors. > > We'd like to clean this up completely but unfortunately there are some error > messages that are not easy to remove. This commit does the following: > > - Remove misleading "backup disconnected" message for cancelled transactions. > - Include TxReplicator destroy in QueueReplicator mutex. Idempotence check > before any destroy. > - Remove spurious warning about ignored unreplicated dequeues. > - Remove log messages about rolling back/destroying empty transactions. > - Log incoming execution exceptions as errors to explain subsequent session > detached errors. > > There should be no more unexpected log messages about rollbacks since we no > longer log rollback of an empty transaction. > > The following errors remain, they are harmless and can be ignored. They are > not > necessarily related to transactions and can occur in other situations where > queues are deleted while still replicating. > > Queue deleted, replication in progress (happens in the test, not related to > TX) > > On primary, the following errors: > - [Protocol] error Incoming Execution exception: not-found: Exchange not > found: qpid.ha-q:... > - [Protocol] error Channel exception: not-attached: Channel xxx is not > attached > > On backup: > - [Protocol] error Execution exception: not-found: Exchange not found: > qpid.ha-q:... > > Queue deleted while backup is in the process of subscribing (in the test > happens > because of empty tx) > > On primary: > [Protocol] error Execution exception: not-found: Queue not found: > qpid.ha-tx:... > > On backup: > [Broker] error Incoming execution exception: not-found: Queue not found: > qpid.ha-tx:... > > Note the "Incoming exception exception" error was actually added by this > commit, > since otherwise there's no way to tell the cause of the "channel not attached" > errors. > > This is not a satisfactory situation. The "harmless" error messages might > sometimes indicate real error situations and the clutter makes debugging > harder. I will leave this JIRA open for now and try to come up with a better > solution. > > > Diffs > ----- > > /trunk/qpid/cpp/src/qpid/Exception.cpp 1562539 > /trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp 1562539 > /trunk/qpid/cpp/src/qpid/ha/PrimaryTxObserver.h 1562539 > /trunk/qpid/cpp/src/qpid/ha/PrimaryTxObserver.cpp 1562539 > /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.h 1562539 > /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp 1562539 > /trunk/qpid/cpp/src/qpid/ha/TxReplicator.h 1562539 > /trunk/qpid/cpp/src/qpid/ha/TxReplicator.cpp 1562539 > > Diff: https://reviews.apache.org/r/17563/diff/ > > > Testing > ------- > > > Thanks, > > Alan Conway > >