Browse Source

writer fix for remove

Вікторія Сергіївна 3 years ago
parent
commit
10597b9581
2 changed files with 8 additions and 6 deletions
  1. 1 1
      mix.exs
  2. 7 5
      src/stores/kvs_st.erl

+ 1 - 1
mix.exs

@@ -4,7 +4,7 @@ defmodule KVS.Mixfile do
   def project do
     [
       app: :kvs,
-      version: "8.11.1",
+      version: "8.11.2",
       description: "KVS Abstract Chain Database",
       package: package(),
       deps: deps()

+ 7 - 5
src/stores/kvs_st.erl

@@ -80,14 +80,16 @@ add(M,#writer{id=Feed,count=S}=C) ->
    C#writer{cache={e(1,M),e(2,M),key(Feed)},count=NS}.
 
 remove(Rec,Feed) ->
-   kvs:ensure(#writer{id=Feed}),
-   W = #writer{count=C, cache=Ch} = kvs:writer(Feed),
-   Ch1 = case {e(1,Rec),e(2,Rec),key(Feed)} of Ch -> Ch;_ -> [] end, % need to keep reference for next element
-   case kvs:delete(Feed,id(Rec)) of
+  kvs:ensure(#writer{id=Feed}),
+  W = #writer{count=C, cache=Ch} = kvs:writer(Feed),
+  Ch1 = case {e(1,Rec),e(2,Rec),key(Feed)} of % need to keep reference for next element
+              Ch -> R = reader(Feed), e(4, prev(R#reader{cache=Ch}));
+              _ -> Ch end,
+  case kvs:delete(Feed,id(Rec)) of
         ok -> Count = C - 1,
               save(W#writer{count = Count, cache=Ch1}),
               Count;
-         _ -> C end.
+        _ -> C end.
 
 append(Rec,Feed) ->
    kvs:ensure(#writer{id=Feed}),