We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rwlock is locked in lb, and I not sure it's a bug or designed.
Rwlock is free in request_filter.
pub(crate) struct LB { pub(crate) service_book: Arc<RwLock<ServiceBook>>, } #[async_trait] impl ProxyHttp for LB { type CTX = LBContext; fn new_ctx(&self) -> Self::CTX { Default::default() } ... async fn request_filter( &self, session: &mut Session, ctx: &mut Self::CTX, ) -> pingora::Result<bool> where Self::CTX: Send + Sync, { let path = session.req_header().uri.path().to_string(); // self.service_book.read().await is locked match self.service_book.read().await.choose_service(path) { None => { println!("service not found"); return Ok(false); } Some(service) => { service.url_rewrite(session.req_header_mut()); ctx.service_addr = Some(service.get_url()); Ok(true) } } } }
The text was updated successfully, but these errors were encountered:
Is it really necessary to use rwlock? My project supports find a HttpPeer and rewrite the request path without lock.
HttpPeer
https://github.com/vicanso/pingap/blob/main/src/proxy/server.rs#L375
Sorry, something went wrong.
I'm not sure if this is relevant to the Pingora framework. This is a user defined lock. Only you can lock it. Where is write() called for the lock?
write()
This question has been stale for a week. It will be closed in an additional day if not updated.
This issue has been closed because it has been stalled with no activity.
No branches or pull requests
What is the problem your feature solves, or the need it fulfills?
Rwlock is locked in lb, and I not sure it's a bug or designed.
Describe the solution you'd like
Rwlock is free in request_filter.
Additional context
The text was updated successfully, but these errors were encountered: