Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
home:Ledest:erlang:20
ecache
ecache_server-fix-find-delete-oldest-object-in-...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ecache_server-fix-find-delete-oldest-object-in-handle_call.patch of Package ecache
From 6d4995a504ee7f37e6630a1ca87a737fd514e0a6 Mon Sep 17 00:00:00 2001 From: Led <ledest@gmail.com> Date: Sat, 12 Mar 2016 14:42:32 +0200 Subject: [PATCH 2/2] ecache_server: fix find/delete oldest object in handle_call(reap_oldest, ...) --- src/ecache_server.erl | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/ecache_server.erl b/src/ecache_server.erl index 87b5515..8e7b2dc 100644 --- a/src/ecache_server.erl +++ b/src/ecache_server.erl @@ -124,13 +124,13 @@ handle_call(empty, _From, #cache{datum_index = DatumIndex} = State) -> {reply, ok, State}; handle_call(reap_oldest, _From, #cache{datum_index = DatumIndex} = State) -> - LeastActive = - ets:foldl(fun(A, Acc) when A#datum.last_active < Acc -> A; - (_, Acc) -> Acc - end, - os:timestamp(), - DatumIndex), - ets:delete(DatumIndex, LeastActive), + DatumNow = #datum{last_active = os:timestamp()}, + case ets:foldl(fun(#datum{last_active = LA} = A, #datum{last_active = Acc}) when LA < Acc -> A; + (_, Acc) -> Acc + end, DatumNow, DatumIndex) of + DatumNow -> true; + LeastActive -> ets:delete_object(DatumIndex, LeastActive) + end, {reply, ok, State}; handle_call({rand, Type, Count}, From, -- 2.1.4
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor