Skip to content

Commit

Permalink
Include elapsed time in output from listing queries
Browse files Browse the repository at this point in the history
  • Loading branch information
systay committed Sep 6, 2016
1 parent cdb1343 commit 7f09552
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
Expand Up @@ -20,6 +20,7 @@
package org.neo4j.kernel.impl.factory;

import java.io.File;
import java.time.Clock;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;

Expand Down
Expand Up @@ -20,10 +20,12 @@
package org.neo4j.kernel.enterprise.builtinprocs;

import java.io.IOException;
import java.time.Clock;
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import java.util.stream.Stream;

import org.neo4j.graphdb.DependencyResolver;
Expand All @@ -35,12 +37,19 @@
import org.neo4j.kernel.impl.api.KernelTransactions;
import org.neo4j.procedure.Context;
import org.neo4j.procedure.Procedure;
import org.neo4j.time.Clocks;

import static java.time.format.DateTimeFormatter.ISO_OFFSET_DATE_TIME;
import static java.util.concurrent.TimeUnit.HOURS;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static java.util.concurrent.TimeUnit.MINUTES;
import static java.util.concurrent.TimeUnit.SECONDS;
import static org.neo4j.procedure.Procedure.Mode.DBMS;

public class BuiltInProcedures
{
public static Clock clock = Clocks.systemClock();

@Context
public DependencyResolver resolver;

Expand Down Expand Up @@ -76,7 +85,8 @@ private QueryStatusResult queryStatusResult( ExecutingQuery q )
q.authSubjectName(),
q.queryText(),
q.queryParameters(),
q.startTime()
q.startTime(),
clock.instant().minusMillis( q.startTime() ).toEpochMilli()
);
}

Expand All @@ -88,17 +98,34 @@ public static class QueryStatusResult
public final String query;
public final Map<String,Object> parameters;
public final String startTime;
public final String elapsedTime;

QueryStatusResult( long queryId, String username, String query, Map<String,Object> parameters, long startTime )
QueryStatusResult( long queryId, String username, String query, Map<String,Object> parameters,
long startTime, long elapsedTime )
{
this.queryId = queryId;
this.username = username;
this.query = query;
this.parameters = parameters;
this.startTime = OffsetDateTime.ofInstant(
this.startTime = formatTime( startTime );
this.elapsedTime = formatInterval( elapsedTime );
}

private static String formatTime( final long startTime )
{
return OffsetDateTime.ofInstant(
Instant.ofEpochMilli( startTime ),
ZoneId.systemDefault()
).format( ISO_OFFSET_DATE_TIME );
}

private static String formatInterval( final long l )
{
final long hr = MILLISECONDS.toHours( l );
final long min = MILLISECONDS.toMinutes( l - HOURS.toMillis( hr ) );
final long sec = MILLISECONDS.toSeconds( l - HOURS.toMillis( hr ) - MINUTES.toMillis( min ) );
final long ms = l - HOURS.toMillis( hr ) - MINUTES.toMillis( min ) - SECONDS.toMillis( sec );
return String.format( "%02d:%02d:%02d.%03d", hr, min, sec, ms );
}
}
}
Expand Up @@ -25,6 +25,7 @@

import org.neo4j.bolt.BoltKernelExtension;
import org.neo4j.graphdb.ResourceIterator;
import org.neo4j.graphdb.Result;
import org.neo4j.graphdb.factory.GraphDatabaseBuilder;
import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.kernel.api.KernelTransaction;
Expand Down

0 comments on commit 7f09552

Please sign in to comment.