Skip to content

Bolt V3 #517

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jul 27, 2018
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
Original file line number Diff line number Diff line change
Expand Up @@ -30,31 +30,31 @@
import static org.neo4j.driver.internal.util.Iterables.newHashMapWithSize;
import static org.neo4j.driver.v1.Values.value;

public final class Bookmark
public final class Bookmarks
{
private static final String BOOKMARK_KEY = "bookmark";
private static final String BOOKMARKS_KEY = "bookmarks";
private static final String BOOKMARK_PREFIX = "neo4j:bookmark:v1:tx";

private static final long UNKNOWN_BOOKMARK_VALUE = -1;

private static final Bookmark EMPTY = new Bookmark( Collections.<String>emptySet() );
private static final Bookmarks EMPTY = new Bookmarks( Collections.emptySet() );

private final Iterable<String> values;
private final String maxValue;

private Bookmark( Iterable<String> values )
private Bookmarks( Iterable<String> values )
{
this.values = values;
this.maxValue = maxBookmark( values );
}

public static Bookmark empty()
public static Bookmarks empty()
{
return EMPTY;
}

public static Bookmark from( String value )
public static Bookmarks from( String value )
{
if ( value == null )
{
Expand All @@ -63,13 +63,13 @@ public static Bookmark from( String value )
return from( singleton( value ) );
}

public static Bookmark from( Iterable<String> values )
public static Bookmarks from( Iterable<String> values )
{
if ( values == null )
{
return empty();
}
return new Bookmark( values );
return new Bookmarks( values );
}

public boolean isEmpty()
Expand All @@ -82,6 +82,11 @@ public String maxBookmarkAsString()
return maxValue;
}

public Iterable<String> values()
{
return values;
}

public Map<String,Value> asBeginTransactionParameters()
{
if ( isEmpty() )
Expand Down Expand Up @@ -110,9 +115,9 @@ public boolean equals( Object o )
{
return false;
}
Bookmark bookmark = (Bookmark) o;
return Objects.equals( values, bookmark.values ) &&
Objects.equals( maxValue, bookmark.maxValue );
Bookmarks bookmarks = (Bookmarks) o;
return Objects.equals( values, bookmarks.values ) &&
Objects.equals( maxValue, bookmarks.maxValue );
}

@Override
Expand All @@ -124,7 +129,7 @@ public int hashCode()
@Override
public String toString()
{
return "Bookmark{values=" + values + "}";
return "Bookmarks{values=" + values + "}";
}

private static String maxBookmark( Iterable<String> bookmarks )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ private enum State
private final NetworkSession session;
private final ResultCursorsHolder resultCursors;

private volatile Bookmark bookmark = Bookmark.empty();
private volatile Bookmarks bookmarks = Bookmarks.empty();
private volatile State state = State.ACTIVE;

public ExplicitTransaction( Connection connection, NetworkSession session )
Expand All @@ -78,9 +78,9 @@ public ExplicitTransaction( Connection connection, NetworkSession session )
this.resultCursors = new ResultCursorsHolder();
}

public CompletionStage<ExplicitTransaction> beginAsync( Bookmark initialBookmark )
public CompletionStage<ExplicitTransaction> beginAsync( Bookmarks initialBookmarks )
{
return protocol.beginTransaction( connection, initialBookmark )
return protocol.beginTransaction( connection, initialBookmarks )
.handle( ( ignore, beginError ) ->
{
if ( beginError != null )
Expand Down Expand Up @@ -228,16 +228,16 @@ public void markTerminated()
state = State.TERMINATED;
}

public Bookmark bookmark()
public Bookmarks bookmark()
{
return bookmark;
return bookmarks;
}

public void setBookmark( Bookmark bookmark )
public void setBookmarks( Bookmarks bookmarks )
{
if ( bookmark != null && !bookmark.isEmpty() )
if ( bookmarks != null && !bookmarks.isEmpty() )
{
this.bookmark = bookmark;
this.bookmarks = bookmarks;
}
}

Expand Down Expand Up @@ -277,7 +277,7 @@ private void transactionClosed( State newState )
{
state = newState;
connection.release(); // release in background
session.setBookmark( bookmark );
session.setBookmarks( bookmarks );
}

private void terminateConnectionOnThreadInterrupt( String reason )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public Session session()
@Override
public Session session( AccessMode mode )
{
return newSession( mode, Bookmark.empty() );
return newSession( mode, Bookmarks.empty() );
}

@Override
Expand All @@ -77,7 +77,7 @@ public Session session( String bookmark )
@Override
public Session session( AccessMode mode, String bookmark )
{
return newSession( mode, Bookmark.from( bookmark ) );
return newSession( mode, Bookmarks.from( bookmark ) );
}

@Override
Expand All @@ -89,13 +89,13 @@ public Session session( Iterable<String> bookmarks )
@Override
public Session session( AccessMode mode, Iterable<String> bookmarks )
{
return newSession( mode, Bookmark.from( bookmarks ) );
return newSession( mode, Bookmarks.from( bookmarks ) );
}

private Session newSession( AccessMode mode, Bookmark bookmark )
private Session newSession( AccessMode mode, Bookmarks bookmarks )
{
assertOpen();
Session session = sessionFactory.newInstance( mode, bookmark );
Session session = sessionFactory.newInstance( mode, bookmarks );
if ( closed.get() )
{
// session does not immediately acquire connection, it is fine to just throw
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public class NetworkSession extends AbstractStatementRunner implements Session
private final RetryLogic retryLogic;
protected final Logger logger;

private volatile Bookmark bookmark = Bookmark.empty();
private volatile Bookmarks bookmarks = Bookmarks.empty();
private volatile CompletionStage<ExplicitTransaction> transactionStage = completedWithNull();
private volatile CompletionStage<Connection> connectionStage = completedWithNull();
private volatile CompletionStage<InternalStatementResultCursor> resultCursorStage = completedWithNull();
Expand Down Expand Up @@ -138,7 +138,7 @@ public Transaction beginTransaction()
@Override
public Transaction beginTransaction( String bookmark )
{
setBookmark( Bookmark.from( bookmark ) );
setBookmarks( Bookmarks.from( bookmark ) );
return beginTransaction();
}

Expand Down Expand Up @@ -173,18 +173,18 @@ public <T> CompletionStage<T> writeTransactionAsync( TransactionWork<CompletionS
return transactionAsync( AccessMode.WRITE, work );
}

void setBookmark( Bookmark bookmark )
void setBookmarks( Bookmarks bookmarks )
{
if ( bookmark != null && !bookmark.isEmpty() )
if ( bookmarks != null && !bookmarks.isEmpty() )
{
this.bookmark = bookmark;
this.bookmarks = bookmarks;
}
}

@Override
public String lastBookmark()
{
return bookmark == null ? null : bookmark.maxBookmarkAsString();
return bookmarks == null ? null : bookmarks.maxBookmarkAsString();
}

@Override
Expand Down Expand Up @@ -387,7 +387,7 @@ private CompletionStage<ExplicitTransaction> beginTransactionAsync( AccessMode m
.thenCompose( connection ->
{
ExplicitTransaction tx = new ExplicitTransaction( connection, NetworkSession.this );
return tx.beginAsync( bookmark );
return tx.beginAsync( bookmarks );
} );

// update the reference to the only known transaction
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

public interface SessionFactory
{
Session newInstance( AccessMode mode, Bookmark bookmark );
Session newInstance( AccessMode mode, Bookmarks bookmarks );

CompletionStage<Void> verifyConnectivity();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ public class SessionFactoryImpl implements SessionFactory
}

@Override
public Session newInstance( AccessMode mode, Bookmark bookmark )
public Session newInstance( AccessMode mode, Bookmarks bookmarks )
{
NetworkSession session = createSession( connectionProvider, retryLogic, mode, logging );
session.setBookmark( bookmark );
session.setBookmarks( bookmarks );
return session;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

import org.neo4j.driver.internal.messaging.v1.BoltProtocolV1;
import org.neo4j.driver.internal.messaging.v2.BoltProtocolV2;
import org.neo4j.driver.internal.messaging.v3.BoltProtocolV3;

import static io.netty.buffer.Unpooled.copyInt;
import static io.netty.buffer.Unpooled.unreleasableBuffer;
Expand All @@ -40,9 +41,9 @@ public final class BoltProtocolUtil

private static final ByteBuf HANDSHAKE_BUF = unreleasableBuffer( copyInt(
BOLT_MAGIC_PREAMBLE,
BoltProtocolV3.VERSION,
BoltProtocolV2.VERSION,
BoltProtocolV1.VERSION,
NO_PROTOCOL_VERSION,
NO_PROTOCOL_VERSION ) ).asReadOnly();

private static final String HANDSHAKE_STRING = createHandshakeString();
Expand Down
Loading