Merge pull request #10 from cloudant/fix-compilation-warnings

Fix compiler warnings
diff --git a/src/ioq_osq.erl b/src/ioq_osq.erl
index 2dbfaea..25db3d4 100644
--- a/src/ioq_osq.erl
+++ b/src/ioq_osq.erl
@@ -42,7 +42,8 @@
 
 
 call(Pid, Msg, Priority) ->
-    Reply = gen_server:call(ioq_osq, {rlimit, nil, Priority, now()}, infinity),
+    Now = erlang:monotonic_time(),
+    Reply = gen_server:call(ioq_osq, {rlimit, nil, Priority, Now}, infinity),
     try
         gen_server:call(Pid, Msg, infinity)
     after
@@ -230,7 +231,9 @@
 
 record_stats(Channel, Pri, T0) ->
     IOClass = if is_tuple(Pri) -> element(1, Pri); true -> Pri end,
-    Latency = timer:now_diff(now(),T0) / 1000,
+    Now = erlang:monotonic_time(),
+    Latency = erlang:convert_time_unit(
+        Now - T0, native, millisecond),
     catch couch_stats:increment_counter([couchdb, io_queue, IOClass]),
     catch couch_stats:increment_counter([couchdb, io_queue, osproc]),
     catch couch_stats:update_histogram([couchdb, io_queue, latency], Latency),
diff --git a/src/ioq_server.erl b/src/ioq_server.erl
index 8e0891d..e33c2fc 100644
--- a/src/ioq_server.erl
+++ b/src/ioq_server.erl
@@ -67,7 +67,7 @@
         msg = Msg,
         channel = Channel,
         class = Class,
-        t0 = now()
+        t0 = erlang:monotonic_time()
     },
     case config:get("ioq.bypass", atom_to_list(Class)) of
         "true" ->
@@ -145,7 +145,7 @@
 handle_info({Ref, Reply}, #state{reqs = Reqs} = State) ->
     case lists:keytake(Ref, #request.ref, Reqs) of
     {value, #request{from=From} = Req, Reqs2} ->
-        TResponse = erlang:now(),
+        TResponse = erlang:monotonic_time(),
         erlang:demonitor(Ref, [flush]),
         reply_to_all(From, Reply),
         update_histograms(ioq_histos, Req, TResponse),
@@ -419,8 +419,8 @@
 
     % record some stats
     RW = rw(Call),
-    SubmitTime = now(),
-    Latency = timer:now_diff(SubmitTime, T0) / 1000,
+    SubmitTime = erlang:monotonic_time(),
+    Latency = erlang:convert_time_unit(SubmitTime - T0, native, millisecond),
     catch couch_stats:increment_counter([couchdb, io_queue, IOClass]),
     catch couch_stats:increment_counter([couchdb, io_queue, RW]),
     catch couch_stats:update_histogram([couchdb, io_queue, latency], Latency),
@@ -432,8 +432,10 @@
 
 update_histograms(Tab, Req, TResponse) ->
     #request{t0=T0, tsub=TSubmit, class=Class, channel=Channel, msg=Msg} = Req,
-    Delta1 = timer:now_diff(TSubmit, T0),
-    Delta2 = timer:now_diff(TResponse, TSubmit),
+    Delta1 = erlang:convert_time_unit(
+        TSubmit - T0, native, microsecond),
+    Delta2 = erlang:convert_time_unit(
+        TResponse - TSubmit, native, microsecond),
     Bin1 = timebin(Delta1),
     Bin2 = timebin(Delta2),
     Bin3 = timebin(Delta1+Delta2),
@@ -478,7 +480,7 @@
 choose_next_request(Qs, Priorities) ->
     Norm = lists:sum(Priorities),
     QueuesAndPriorities = lists:zip(Qs, Priorities),
-    SortedQueues = sort_queues(QueuesAndPriorities, Norm, random:uniform()),
+    SortedQueues = sort_queues(QueuesAndPriorities, Norm, rand:uniform()),
     {Item, NewQueues} = choose_prioritized_request(SortedQueues),
     Map0 = lists:zip(SortedQueues, NewQueues),
     {Item, [element(2, lists:keyfind(Q, 1, Map0)) || Q <- Qs]}.
diff --git a/src/ioq_server2.erl b/src/ioq_server2.erl
index 5e2e01f..dadd44d 100644
--- a/src/ioq_server2.erl
+++ b/src/ioq_server2.erl
@@ -112,8 +112,7 @@
                 "ioq2", "dispatch_strategy", ?DISPATCH_SERVER_PER_SCHEDULER),
             Server = case DispatchStrategy of
                 ?DISPATCH_RANDOM ->
-                    maybe_seed(),
-                    SID = random:uniform(erlang:system_info(schedulers)),
+                    SID = rand:uniform(erlang:system_info(schedulers)),
                     ?SERVER_ID(SID);
                 ?DISPATCH_FD_HASH ->
                     NumSchedulers = erlang:system_info(schedulers),
@@ -601,19 +600,6 @@
     end.
 
 
--spec maybe_seed() -> {integer(), integer(), integer()}.
-maybe_seed() ->
-    case get(random_seed) of
-        undefined ->
-            <<A:32, B:32, C:32>> = crypto:strong_rand_bytes(12),
-            Seed = {A, B, C},
-            random:seed(Seed),
-            Seed;
-        Seed ->
-            Seed
-    end.
-
-
 %% ioq_server2 Tests
 
 
@@ -954,7 +940,7 @@
     ),
     FakeServer = fun(F) ->
         receive {'$gen_call', {Pid, Ref}, Call} ->
-            timer:sleep(random:uniform(RespDelay)),
+            timer:sleep(rand:uniform(RespDelay)),
             Pid ! {Ref, {reply, Call}}
         end,
         F(F)
@@ -1042,7 +1028,7 @@
 
 
 random_server(Servers) ->
-    lists:nth(random:uniform(length(Servers)), Servers).
+    lists:nth(rand:uniform(length(Servers)), Servers).
 
 
 test_io_error(#state{waiters=Waiters, reqs=Reqs}=State) ->