Comments (10)
Did you happen to catch where the memory is piling up?
I'm going to guess its the channel.close method frames hanging around and that some cleanup is needed when a channel closes
from simpleamqpclient.
I did go as far as the AmqpClient::Detail::Channel::BasicPublish method, but I can take it a step further if this helps you.
from simpleamqpclient.
I've pushed what I think is a fix for your issue in the issue28_exception_frame_free
branch. (see #29). You want to give that a shot see if it fixes your issue, I'd appreciate the feedback.
from simpleamqpclient.
Thanks for the quick response. I tried your patch and indeed it fixes the issue. I don't know if this is your final solution, but I would like to propose a small improvement. The fix now throws an exception which doesn't have a meaning when I catch it. In the previous situation I could catch the exception which corresponded to a non-existing exchange. Is it possible to rethrow the original exception? Like I did below?
try
{
AmqpException::Throw(*reinterpret_cast<amqp_channel_close_t*>(incoming_frame.payload.method.decoded));
}
catch (AmqpException& e)
{
MaybeReleaseBuffers();
throw e; <<<<<<<< Is it possible to rethrow the original exception?
}
from simpleamqpclient.
Believe it or not my code does do the right thing. When you throw inside a catch statement without an argument it rethrows the original exception.
Your code will cause the exception to be copied using the copy constructor that copies exception is then thrown.
See this: http://stackoverflow.com/questions/2360597/c-exceptions-questions-on-rethrow-of-original-exception
from simpleamqpclient.
Yes, you're right. I didn't know that, so I learned something here.
I was shuffeling around with the libraries to see the difference in behaviour and by accident loaded the old version. I guess something went wrong here.
When do you think you can push the fix to the trunk?
from simpleamqpclient.
The patch seems to have minimal impact. I'll probably merge it later this evening when I have a moment.
from simpleamqpclient.
Merged.
from simpleamqpclient.
Thank you very much!
from simpleamqpclient.
i just met this problem,thank you for reporting and quickly solving this bug,
from simpleamqpclient.
Related Issues (20)
- How to quit basicsumemessage when a quit signal coming ?
- when set message HeaderTable, the ReplyTo property Settings have been cleared. HOT 3
- Is This Dead? HOT 3
- Classify Exceptions
- Consumer stops consuming inside Docker container (after some idle period) HOT 1
- fatal error: SimpleAmqpClient/SimpleAmqpClient.h: No such file or directory HOT 1
- Channel::OpenOpts::FromUri results in Access violation reading location 0x0000000000000000. HOT 3
- Version 2.4 compatibility with newer Rabbit servers HOT 4
- Latest NuGet of SimpleAmqpClient HOT 1
- Linking the library on Linux using cmake
- Keep alive for long running connections HOT 3
- App crashes when connection closes HOT 2
- `std::bad_alloc()` when header table is empty
- Handle node failure in RabbitMQ cluster
- Support for Quorum queues
- Bug,Exclusive always true!
- Channel can't open
- Compiling with boost 1.82 generates deprecation warnings
- On the issue of creating channels HOT 7
- Test Mate C++ VSCode
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from simpleamqpclient.