Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .dialyzer_ignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lib/cream/continuum.ex:42: Guard test _@1::'true' =:= 'false' can never succeed
16 changes: 11 additions & 5 deletions lib/cream/cluster.ex
Original file line number Diff line number Diff line change
Expand Up @@ -53,10 +53,15 @@ defmodule Cream.Cluster do
"""
@type item :: {key, value}

@typedoc """
Multiple items as a map.
"""
@type items_map :: %{required(key) => value}

@typedoc """
Multiple items as a list of tuples or a map.
"""
@type items :: [item] | [%{required(key) => value}]
@type items :: [item] | items_map

@typedoc """
Reason associated with an error.
Expand Down Expand Up @@ -286,8 +291,9 @@ defmodule Cream.Cluster do
set(cluster, %{k1 => v1, k2 => v2}, ttl: 300)
```
"""
@spec set(t, item | items, Keyword.t) :: :ok | {:error, reason}
def set(cluster, item_or_items, opts \\ [])
@spec set(t, item, Keyword.t()) :: :ok | {:error, reason}
@spec set(t, items, Keyword.t()) :: %{required(key) => :ok | {:error, reason}}
def set(cluster, item_or_items, opts \\ [])

def set(cluster, items, opts) when is_list(items) or is_map(items) do
with_worker cluster, fn worker ->
Expand All @@ -310,8 +316,8 @@ defmodule Cream.Cluster do
%{"foo" => "bar", "one" => "one"} = get(pid, ["foo", "bar"])
```
"""
@spec get(t, key, Keyword.t) :: value
@spec get(t, keys, Keyword.t) :: items
@spec get(t, key, Keyword.t) :: value | nil
@spec get(t, keys, Keyword.t) :: items_map
def get(cluster, key_or_keys, opts \\ [])

def get(cluster, key, opts) when is_binary(key) do
Expand Down
7 changes: 6 additions & 1 deletion lib/cream/cluster/worker.ex
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,12 @@ defmodule Cream.Cluster.Worker do
end

reply = Enum.reduce pairs_by_conn, %{}, fn {conn, pairs}, acc ->
{:ok, responses} = Memcache.multi_set(conn, pairs, options)
responses = case Memcache.multi_set(conn, pairs, options) do
{:ok, results} -> results
{:error, reason} when is_atom(reason) -> Enum.map(pairs, fn _ ->
{:error, Atom.to_string(reason)}
end)
end

Enum.zip(pairs, responses)
|> Enum.reduce(acc, fn {pair, status}, acc ->
Expand Down
3 changes: 2 additions & 1 deletion mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ defmodule Cream.Mixfile do
"README.md": [title: "README"],
"CHANGELOG.md": [title: "CHANGELOG"]
]
]
],
dialyzer: [ignore_warnings: ".dialyzer_ignore"]
]
end

Expand Down