Jim Horng created HTTPASYNC-127:
-----------------------------------

             Summary: Make memcached storage backend operation non-blocking
                 Key: HTTPASYNC-127
                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-127
             Project: HttpComponents HttpAsyncClient
          Issue Type: Improvement
    Affects Versions: 4.1.3
            Reporter: Jim Horng


< Context >
Since `HttpAysncClient` is non-blocking, but it's operation to memcached at 
`MemcachedHttpCacheStorage` layer still using blocking I/O manner. Even 
`spymemcached` client which has non-blocking I/O in nature, but 
`MemcachedHttpCacheStorage` is using `spymemcached` blocking API.

< Benefit >
If all the way in flow of `HttpAsyncClient` is non-blocking, then it can truely 
do high concurrency with just a few threads, otherwise, performance will be 
largely impact by blocking calls since there's only a few threads for serving 
http requests.

< Code Flow for Blocking manner >
# 
`org.apache.http.impl.client.cache.memcached.MemcachedHttpCacheStorage#getEntry`
 -> `final MemcachedCacheEntry mce = reconstituteEntry(client.get(key));` 
# net.spy.memcached.MemcachedClient#get(java.lang.String)

Should use `net.spy.memcached.MemcachedClient#asyncGet(java.lang.String)`, but 
then whole API calling structure require big changes.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to