pull/2/head
Jeff Weston 2019-09-11 12:01:38 -04:00
parent b4e177654e
commit 8e24aea5ed
4 changed files with 16 additions and 20 deletions

View File

@ -105,8 +105,6 @@ NormDeveloperGuide.html - HTML version of NORM Developer's Guide
(nice for browsing) (nice for browsing)
NormUserGuide.pdf - Guide to "norm" demo app usage NormUserGuide.pdf - Guide to "norm" demo app usage
(this document needs corrections and
is currently incomplete)
VERSION.TXT - NORM version history notes VERSION.TXT - NORM version history notes

View File

@ -21,9 +21,8 @@ Version 1.4b3
- Fixed issue with NormSession::QueueTxObject() where ASSERT() failure - Fixed issue with NormSession::QueueTxObject() where ASSERT() failure
occurred depending upon previous tx object enqueue/dequeue history occurred depending upon previous tx object enqueue/dequeue history
(Thanks to Jeff Bush for finding this one) (Thanks to Jeff Bush for finding this one)
- Changed repeated scheduling of receiver remote sender inactivity - Fixed issue with fix for stream lockup problem from below.
timer to ensure that busy CPU doesn't result in premature (this is in version 1.4b3a)
inactivity indication.
Version 1.4b2 Version 1.4b2
============= =============

View File

@ -1598,19 +1598,18 @@ bool NormObject::NextServerMsg(NormObjectMsg* msg)
} }
block->TxInit(blockId, numData, session.ServerAutoParity()); block->TxInit(blockId, numData, session.ServerAutoParity());
if (blockId < max_pending_block) block->SetFlag(NormBlock::IN_REPAIR);
if (blockId < max_pending_block)
block->SetFlag(NormBlock::IN_REPAIR);
while (!block_buffer.Insert(block)) while (!block_buffer.Insert(block))
{ {
ASSERT(STREAM == type); ASSERT(STREAM == type);
if (blockId > block_buffer.RangeLo()) if (blockId > block_buffer.RangeLo())
{ {
NormBlock* b = block_buffer.Find(block_buffer.RangeLo()); NormBlock* lowBlock = block_buffer.Find(block_buffer.RangeLo());
ASSERT(NULL != b); ASSERT(NULL != lowBlock);
ASSERT(!b->IsPending()); ASSERT(!lowBlock->IsPending());
NormBlockId lowBlockId = lowBlock->GetId();
bool push = static_cast<NormStreamObject*>(this)->GetPushMode(); bool push = static_cast<NormStreamObject*>(this)->GetPushMode();
if (!push && (b->IsRepairPending() || IsRepairSet(b->GetId()))) if (!push && (lowBlock->IsRepairPending() || IsRepairSet(lowBlockId)))
{ {
// Pending repairs delaying stream advance // Pending repairs delaying stream advance
DMSG(4, "NormObject::NextServerMsg() node>%lu pending repairs delaying stream progress\n", LocalNodeId()); DMSG(4, "NormObject::NextServerMsg() node>%lu pending repairs delaying stream progress\n", LocalNodeId());
@ -1620,12 +1619,12 @@ bool NormObject::NextServerMsg(NormObjectMsg* msg)
else else
{ {
// Prune old non-pending block (or even pending if "push" enabled stream) // Prune old non-pending block (or even pending if "push" enabled stream)
block_buffer.Remove(b); block_buffer.Remove(lowBlock);
repair_mask.Unset(blockId); // just in case repair_mask.Unset(lowBlockId); // just in case
pending_mask.Unset(blockId); pending_mask.Unset(lowBlockId);
if (IsStream()) if (IsStream()) // always true
static_cast<NormStreamObject*>(this)->UnlockBlock(b->GetId()); static_cast<NormStreamObject*>(this)->UnlockBlock(lowBlockId);
session.ServerPutFreeBlock(b); session.ServerPutFreeBlock(lowBlock);
continue; continue;
} }
} }
@ -1641,8 +1640,8 @@ bool NormObject::NextServerMsg(NormObjectMsg* msg)
} }
else else
{ {
ASSERT(0);
DMSG(0, "NormObject::NextServerMsg() invalid non-stream state!\n"); DMSG(0, "NormObject::NextServerMsg() invalid non-stream state!\n");
ASSERT(0);
return false; return false;
} }
} }

View File

@ -32,6 +32,6 @@
#ifndef _NORM_VERSION #ifndef _NORM_VERSION
#define _NORM_VERSION #define _NORM_VERSION
#define VERSION "1.4b3" #define VERSION "1.4b3a"
#endif // _NORM_VERSION #endif // _NORM_VERSION