[Evergreen-dev] Empty OSRF gateway responses from missourievergreen.org and poisoned app cache

Jason Stephenson jason at sigio.com
Wed Jan 13 10:09:28 EST 2021


Ken,

Not the Jason you're asking, but I can tell you that search timeouts
will result in the kind of empty result that you see.  Other methods can
do the same thing when timeouts occur. Your code should probably treat
empty results as invalid and not cache them.

Unfortunately, the backend is not consistent with it result types. This
is something that should be addressed at some point, though it will
definitely break third party applications such as yours.

Jason Stephenson


On 1/12/21 9:07 PM, Ken Cox wrote:
> [copying the list this time]
> 
> Jason,
> 
> Thanks for the info.  I hear that the server admins "did something"
> and the problem is gone.  I don't have enough visibility to file a
> useful bug.
> 
> Can you (or anyone?) tell me what should be done on the server to
> fix the issue?  Did you see it on CW MARS at the time I reported
> (2021-01-11 09:30:53.909 from the log above)?
> 
> That's a good idea to not cache empty results.  I will look into it.
> Even if they are valid results, the cost of not caching them is much
> smaller than the cost of caching them.
> 
> The library I use on Android is Volley, and I configure it to cache
> for a maximum of one week (even though the cache headers from
> Evergreen have a TTL of one year), up to a max of 10 MiB.
> 
> Ken
> 
> On Mon, Jan 11, 2021 at 10:26 AM Jason Boyer
> <jboyer at equinoxinitiative.org> wrote:
>>
>> Hi Ken, missourievergreen.org is returning more consistent results this morning but I’ve seen indications that Jabber errors at certain points along the communication chain can cause this kind of result. That’s definitely an Evergreen bug.
>>
>> As for thoughts on caching, one potential option is to discard completely empty results like these (except for special cases where they make sense, perhaps.) But even for open-ils.search.biblio.record.mods_slim.retrieve the value returned could change if staff edit the record so entries shouldn’t live “forever." Are you using a cache that discards entries after a period of time, or at a certain storage size, or some other method? (I’m not really familiar with the options on Android, I assume it has some APIs that help manage cached values.)
>>
>> Jason
>>
>> --
>> Jason Boyer
>> Senior System Administrator
>> Equinox Open Library Initiative
>> phone:  +1 (877) Open-ILS (673-6457)
>> email:  JBoyer at EquinoxInitiative.org
>> web:  https://EquinoxInitiative.org/
>>
>> On Jan 10, 2021, at 3:54 PM, Ken Cox <kenstir at gmail.com> wrote:
>>
>> Hello devs, I have a pressing live issue and a request for advice.
>>
>>
>> EMPTY OSRF GATEWAY RESPONSES CAUSING APP ERRORS
>>
>> For the last 4 days, some sizeable percentage of responses from
>> https://missourievergreen.org/osrf-gateway-v1 are empty, meaning
>>
>>        {"payload":[],"status":200}
>>
>> What could cause this?  The OPAC appears to be working, it's just the
>> OSRF gateway that is behaving this way.
>>
>> For example, this search request just returned an empty response:
>>
>>        [net] request
>> https://missourievergreen.org/osrf-gateway-v1?service=open-ils.search&method=open-ils.search.biblio.multiclass.query&param=%7B%22limit%22%3A200%2C%22offset%22%3A0%7D&param=%22keyword%3Aharry%20potter%20site(SRL-UN)%22&param=1&_ck=7&_sk=3-3-7
>>        [net] recv 27: {"payload":[],"status":200}
>>
>> Sometimes the search response is empty, causing the app to error.
>> Sometimes the search works but MODS responses are empty, causing the
>> app to display search results with missing metadata, e.g.:
>>
>>        [net] cached:0
>> url:https://missourievergreen.org/osrf-gateway-v1?service=open-ils.search&method=open-ils.search.biblio.record.mods_slim.retrieve&param=1395189&_ck=7&_sk=3-3-7
>>        [net] recv 27: {"payload":[],"status":200}
>>
>> This response is not expected; what is expected is an "mvr" object, as
>> you will see if you paste that URL into your browser.
>>
>>
>> POISONED CACHE
>>
>> The app is currently caching successful responses that I figured to be
>> stable, e.g. open-ils.search.biblio.record.mods_slim.retrieve.
>> Because the empty responses appear successful, the app cache is now
>> poisoned.  Do you have any advice on how better to handle this
>> situation?
>>
>> Notice in the requests above that I include 2 cache-busting
>> parameters, _ck=7 (client app version 7) and _sk=3-3-7 (server version
>> 3-3-7).  That way, either a client update or a server update will
>> invalidate all cached responses.
>>
>> Thanks,
>> Ken Cox
>> _______________________________________________
>> Evergreen-dev mailing list
>> Evergreen-dev at list.evergreen-ils.org
>> http://list.evergreen-ils.org/cgi-bin/mailman/listinfo/evergreen-dev
>>
>>
> 
> 


More information about the Evergreen-dev mailing list