add some sleep in test to avoid confused result (date in sqlite is second based )
use RWLock to replace object lock
more impl on recycle logic
update comment
more impl of recycle
fix wrong condition check
when get message from cache for queryDetail (json serialization only) ,release message
more comment
fix wrong condition check
fix wrong condition check
more impl of MemoryMessageCache recycle logic
add StateConsistChecker interface to help testing
move StateConsistChecker outof MemoryMessageCache
merge some TestDataStore impl
fix missing increase referenceMessage referencedCounter
misc test update