You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by jp...@apache.org on 2010/08/12 19:44:59 UTC
svn commit: r984874 - in /trafficserver/traffic/trunk/iocore/cache: Cache.cc
CacheLink.cc CachePart.cc CacheRead.cc CacheWrite.cc P_CacheInternal.h
Author: jplevyak
Date: Thu Aug 12 17:44:58 2010
New Revision: 984874
URL: http://svn.apache.org/viewvc?rev=984874&view=rev
Log:
TS076: fix regression test associated with TS-76
Modified:
trafficserver/traffic/trunk/iocore/cache/Cache.cc
trafficserver/traffic/trunk/iocore/cache/CacheLink.cc
trafficserver/traffic/trunk/iocore/cache/CachePart.cc
trafficserver/traffic/trunk/iocore/cache/CacheRead.cc
trafficserver/traffic/trunk/iocore/cache/CacheWrite.cc
trafficserver/traffic/trunk/iocore/cache/P_CacheInternal.h
Modified: trafficserver/traffic/trunk/iocore/cache/Cache.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/Cache.cc?rev=984874&r1=984873&r2=984874&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/Cache.cc (original)
+++ trafficserver/traffic/trunk/iocore/cache/Cache.cc Thu Aug 12 17:44:58 2010
@@ -1953,7 +1953,7 @@ LmemHit:
Action *
Cache::lookup(Continuation *cont, CacheKey *key, CacheFragType type, char *hostname, int host_len)
{
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
cont->handleEvent(CACHE_EVENT_LOOKUP_FAILED, 0);
return ACTION_RESULT_DONE;
}
@@ -2075,7 +2075,7 @@ Cache::remove(Continuation *cont, CacheK
NOWARN_UNUSED(user_agents);
NOWARN_UNUSED(link);
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
if (cont)
cont->handleEvent(CACHE_EVENT_REMOVE_FAILED, 0);
return ACTION_RESULT_DONE;
Modified: trafficserver/traffic/trunk/iocore/cache/CacheLink.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/CacheLink.cc?rev=984874&r1=984873&r2=984874&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/CacheLink.cc (original)
+++ trafficserver/traffic/trunk/iocore/cache/CacheLink.cc Thu Aug 12 17:44:58 2010
@@ -27,7 +27,7 @@ Action *
Cache::link(Continuation * cont, CacheKey * from, CacheKey * to, CacheFragType type, char *hostname, int host_len)
{
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
cont->handleEvent(CACHE_EVENT_LINK_FAILED, 0);
return ACTION_RESULT_DONE;
}
@@ -77,7 +77,7 @@ Action *
Cache::deref(Continuation * cont, CacheKey * key, CacheFragType type, char *hostname, int host_len)
{
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
cont->handleEvent(CACHE_EVENT_DEREF_FAILED, 0);
return ACTION_RESULT_DONE;
}
Modified: trafficserver/traffic/trunk/iocore/cache/CachePart.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/CachePart.cc?rev=984874&r1=984873&r2=984874&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/CachePart.cc (original)
+++ trafficserver/traffic/trunk/iocore/cache/CachePart.cc Thu Aug 12 17:44:58 2010
@@ -32,7 +32,7 @@ Action *
Cache::scan(Continuation * cont, char *hostname, int host_len, int KB_per_second)
{
Debug("cache_scan_truss", "inside scan");
- if (!(CacheProcessor::cache_ready & CACHE_FRAG_TYPE_HTTP)) {
+ if (!CACHE_READY(CACHE_FRAG_TYPE_HTTP)) {
cont->handleEvent(CACHE_EVENT_SCAN_FAILED, 0);
return ACTION_RESULT_DONE;
}
Modified: trafficserver/traffic/trunk/iocore/cache/CacheRead.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/CacheRead.cc?rev=984874&r1=984873&r2=984874&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/CacheRead.cc (original)
+++ trafficserver/traffic/trunk/iocore/cache/CacheRead.cc Thu Aug 12 17:44:58 2010
@@ -32,7 +32,7 @@
Action *
Cache::open_read(Continuation * cont, CacheKey * key, CacheFragType type, char *hostname, int host_len)
{
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
cont->handleEvent(CACHE_EVENT_OPEN_READ_FAILED, (void *) -ECACHE_NOT_READY);
return ACTION_RESULT_DONE;
}
@@ -93,7 +93,7 @@ Cache::open_read(Continuation * cont, Ca
CacheLookupHttpConfig * params, CacheFragType type, char *hostname, int host_len)
{
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
cont->handleEvent(CACHE_EVENT_OPEN_READ_FAILED, (void *) -ECACHE_NOT_READY);
return ACTION_RESULT_DONE;
}
Modified: trafficserver/traffic/trunk/iocore/cache/CacheWrite.cc
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/CacheWrite.cc?rev=984874&r1=984873&r2=984874&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/CacheWrite.cc (original)
+++ trafficserver/traffic/trunk/iocore/cache/CacheWrite.cc Thu Aug 12 17:44:58 2010
@@ -192,11 +192,15 @@ CacheVC::handleWrite(int event, Event *e
frag_len = 0;
set_agg_write_in_progress();
POP_HANDLER;
- agg_len = round_to_approx_size(write_len + header_len + frag_len + sizeofDoc);
+ uint32 to_write = write_len + header_len + sizeofDoc;
+ if (to_write > MAX_FRAG_SIZE) {
+ write_len = MAX_FRAG_SIZE - header_len - sizeofDoc;
+ to_write = MAX_FRAG_SIZE;
+ }
+ agg_len = round_to_approx_size(to_write);
part->agg_todo_size += agg_len;
- ink_assert(agg_len <= AGG_SIZE);
bool agg_error =
- (agg_len > AGG_SIZE ||
+ (agg_len > AGG_SIZE || header_len + sizeofDoc > MAX_FRAG_SIZE ||
(!f.readers && (part->agg_todo_size > cache_config_agg_write_backlog + AGG_SIZE) && write_len));
#ifdef CACHE_AGG_FAIL_RATE
agg_error = agg_error || ((uint32) mutex->thread_holding->generator.random() <
@@ -215,6 +219,7 @@ CacheVC::handleWrite(int event, Event *e
return EVENT_RETURN;
return handleEvent(AIO_EVENT_DONE, 0);
}
+ ink_assert(agg_len <= AGG_SIZE);
if (f.evac_vector)
part->agg.push(this);
else
@@ -1592,7 +1597,7 @@ Cache::open_write(Continuation *cont, Ca
int options, time_t apin_in_cache, char *hostname, int host_len)
{
- if (!(CacheProcessor::cache_ready & frag_type)) {
+ if (!CACHE_READY(frag_type)) {
cont->handleEvent(CACHE_EVENT_OPEN_WRITE_FAILED, (void *) -ECACHE_NOT_READY);
return ACTION_RESULT_DONE;
}
@@ -1662,7 +1667,7 @@ Cache::open_write(Continuation *cont, Ca
{
NOWARN_UNUSED(key1);
- if (!(CacheProcessor::cache_ready & type)) {
+ if (!CACHE_READY(type)) {
cont->handleEvent(CACHE_EVENT_OPEN_WRITE_FAILED, (void *) -ECACHE_NOT_READY);
return ACTION_RESULT_DONE;
}
Modified: trafficserver/traffic/trunk/iocore/cache/P_CacheInternal.h
URL: http://svn.apache.org/viewvc/trafficserver/traffic/trunk/iocore/cache/P_CacheInternal.h?rev=984874&r1=984873&r2=984874&view=diff
==============================================================================
--- trafficserver/traffic/trunk/iocore/cache/P_CacheInternal.h (original)
+++ trafficserver/traffic/trunk/iocore/cache/P_CacheInternal.h Thu Aug 12 17:44:58 2010
@@ -61,6 +61,8 @@ class EvacuationBlock;
// retry read from writer delay
#define WRITER_RETRY_DELAY HRTIME_MSECONDS(50)
+#define CACHE_READY(_x) (CacheProcessor::cache_ready & (1 << (_x)))
+
#ifndef CACHE_LOCK_FAIL_RATE
#define CACHE_TRY_LOCK(_l, _m, _t) MUTEX_TRY_LOCK(_l, _m, _t)
#else
@@ -1313,7 +1315,7 @@ CacheProcessor::IsCacheReady(CacheFragTy
{
if (IsCacheEnabled() != CACHE_INITIALIZED)
return 0;
- return (cache_ready & type);
+ return (cache_ready & (1 << type));
}
TS_INLINE Cache *