v1.4b3a
parent
b4e177654e
commit
8e24aea5ed
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
=============
|
=============
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue