Skip to content

Commit ab38c3d

Browse files
committed
assorted cleanups and fixes
Signed-off-by: Marc-Antoine Perennou <[email protected]>
1 parent 91d2865 commit ab38c3d

File tree

4 files changed

+17
-12
lines changed

4 files changed

+17
-12
lines changed

src/acknowledgement.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ impl Acknowledgements {
6363
self.0.lock().on_channel_error(error);
6464
}
6565

66-
pub(crate) fn reset(&self) {
67-
self.0.lock().reset();
66+
pub(crate) fn reset(&self, error: Error) {
67+
self.0.lock().reset(error);
6868
}
6969
}
7070

@@ -179,8 +179,8 @@ impl Inner {
179179
}
180180
}
181181

182-
fn reset(&mut self) {
183-
// FIXME(recovery): handle pendings ??
182+
fn reset(&mut self, error: Error) {
184183
self.delivery_tag = IdSequence::new(false);
184+
self.on_channel_error(error);
185185
}
186186
}

src/channel.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,6 @@ impl Channel {
140140
self.error_handler.set_handler(handler);
141141
}
142142

143-
pub(crate) fn reset(&self) {
144-
// FIXME
145-
}
146-
147143
pub(crate) async fn restore(
148144
&self,
149145
ch: &ChannelDefinitionInternal,
@@ -576,7 +572,9 @@ impl Channel {
576572
}
577573

578574
fn on_channel_close_ok_sent(&self, error: Option<Error>) {
579-
if !self.recovery_config.auto_recover_channels || !error.as_ref().map_or(false, Error::is_amqp_soft_error) {
575+
if !self.recovery_config.auto_recover_channels
576+
|| !error.as_ref().map_or(false, Error::is_amqp_soft_error)
577+
{
580578
self.set_closed(
581579
error
582580
.clone()
@@ -870,8 +868,9 @@ impl Channel {
870868
if self.recovery_config.auto_recover_channels {
871869
self.status.update_recovery_context(|ctx| {
872870
ctx.set_expected_replies(self.frames.take_expected_replies(self.id));
871+
self.acknowledgements.reset(ctx.cause());
872+
self.consumers.error(ctx.cause());
873873
});
874-
self.acknowledgements.reset();
875874
if !self.status.confirm() {
876875
self.status.finalize_recovery();
877876
}
@@ -913,7 +912,10 @@ impl Channel {
913912
);
914913
Error::ProtocolError(error)
915914
});
916-
match (self.recovery_config.auto_recover_channels, error.clone().ok()) {
915+
match (
916+
self.recovery_config.auto_recover_channels,
917+
error.clone().ok(),
918+
) {
917919
(true, Some(error)) if error.is_amqp_soft_error() => {
918920
self.status.set_reconnecting(error)
919921
}

src/channel_recovery_context.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ impl ChannelRecoveryContext {
2121
}
2222
}
2323

24+
pub(crate) fn cause(&self) -> Error {
25+
self.cause.clone()
26+
}
27+
2428
pub(crate) fn notifier(&self) -> Notifier {
2529
self.notifier.clone()
2630
}

src/connection.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ impl Connection {
152152
.channels
153153
.push(RestoredChannel::new(if let Some(c) = c.channel.clone() {
154154
let channel = c.clone();
155-
c.reset();
156155
c.channel_open(channel).await?
157156
} else {
158157
self.create_channel().await?

0 commit comments

Comments
 (0)