Package com.mongodb

Class WriteConcern

  • All Implemented Interfaces:
    Serializable
    Direct Known Subclasses:
    WriteConcern.Majority


    @Immutable
    public class WriteConcern
    extends Object
    implements Serializable

    Controls the acknowledgment of write operations with various options.

    w

    • 0: Don't wait for acknowledgement from the server
    • 1: Wait for acknowledgement, but don't wait for secondaries to replicate
    • >=2: Wait for one or more secondaries to also acknowledge
    • "majority": Wait for a majority of data bearing nodes to acknowledge
    • "<tag set name>": Wait for one or more secondaries to also acknowledge based on a tag set name

    wtimeout - how long to wait for secondaries to acknowledge before failing

    • 0: indefinite
    • >0: time to wait in milliseconds

    Other options:

    • journal: If true block until write operations have been committed to the journal. Cannot be used in combination with fsync. Prior to MongoDB 2.6 this option was ignored if the server was running without journaling. Starting with MongoDB 2.6 write operations will fail with an exception if this option is used when the server is running without journaling.
    See Also:
    Serialized Form
    MongoDB documentation
    Write Concern
    Write Concern Reference
    • Field Detail

      • ACKNOWLEDGED

        public static final WriteConcern ACKNOWLEDGED
        Write operations that use this write concern will wait for acknowledgement, using the default write concern configured on the server.
        Since:
        2.10.0
        MongoDB documentation
        Acknowledged
      • W1

        public static final WriteConcern W1
        Write operations that use this write concern will wait for acknowledgement from a single member.
        Since:
        3.2
        MongoDB documentation
        w option
      • W2

        public static final WriteConcern W2
        Write operations that use this write concern will wait for acknowledgement from two members.
        Since:
        3.2
        MongoDB documentation
        w option
      • W3

        public static final WriteConcern W3
        Write operations that use this write concern will wait for acknowledgement from three members.
        Since:
        3.2
        MongoDB documentation
        w option
      • UNACKNOWLEDGED

        public static final WriteConcern UNACKNOWLEDGED
        Write operations that use this write concern will return as soon as the message is written to the socket. Exceptions are raised for network issues, but not server errors.
        Since:
        2.10.0
        MongoDB documentation
        Unacknowledged
      • JOURNALED

        public static final WriteConcern JOURNALED
        Write operations wait for the server to group commit to the journal file on disk.
        MongoDB documentation
        Journaled
      • REPLICA_ACKNOWLEDGED

        @Deprecated
        public static final WriteConcern REPLICA_ACKNOWLEDGED
        Deprecated. Prefer WriteConcern#W2
        Exceptions are raised for network issues, and server errors; waits for at least 2 servers for the write operation.
      • NORMAL

        @Deprecated
        public static final WriteConcern NORMAL
        Deprecated. Prefer UNACKNOWLEDGED

        Write operations that use this write concern will return as soon as the message is written to the socket. Exceptions are raised for network issues, but not server errors.

        This field has been superseded by WriteConcern.UNACKNOWLEDGED, and may be deprecated in a future release.

        See Also:
        UNACKNOWLEDGED
      • SAFE

        @Deprecated
        public static final WriteConcern SAFE
        Deprecated. Prefer ACKNOWLEDGED

        Write operations that use this write concern will wait for acknowledgement from the primary server before returning. Exceptions are raised for network issues, and server errors.

        This field has been superseded by WriteConcern.ACKNOWLEDGED, and may be deprecated in a future release.

        See Also:
        ACKNOWLEDGED
      • MAJORITY

        public static final WriteConcern MAJORITY
        Exceptions are raised for network issues, and server errors; waits on a majority of servers for the write operation.
      • FSYNC_SAFE

        @Deprecated
        public static final WriteConcern FSYNC_SAFE
        Deprecated. Prefer JOURNALED

        Exceptions are raised for network issues, and server errors; the write operation waits for the server to flush the data to disk.

        This field has been superseded by WriteConcern.FSYNCED, and may be deprecated in a future release.

        See Also:
        FSYNCED
      • JOURNAL_SAFE

        @Deprecated
        public static final WriteConcern JOURNAL_SAFE
        Deprecated. Prefer JOURNALED

        Exceptions are raised for network issues, and server errors; the write operation waits for the server to group commit to the journal file on disk.

        This field has been superseded by WriteConcern.JOURNALED, and may be deprecated in a future release.

      • REPLICAS_SAFE

        @Deprecated
        public static final WriteConcern REPLICAS_SAFE
        Deprecated. Prefer W2

        Exceptions are raised for network issues, and server errors; waits for at least 2 servers for the write operation.

        This field has been superseded by WriteConcern.REPLICA_ACKNOWLEDGED, and may be deprecated in a future release.

        See Also:
        W2
    • Constructor Detail

      • WriteConcern

        @Deprecated
        public WriteConcern​()
        Deprecated. Prefer UNACKNOWLEDGED
        Constructs an instance with all properties initialized to their default values, except for w, which is initialized to 0, making instances constructed this ways equivalent to WriteConcern#UNACKNOWLEDGED
        See Also:
        UNACKNOWLEDGED
      • WriteConcern

        public WriteConcern​(int w)
        Construct an instance with the given integer-based value for w.
        Parameters:
        w - number of servers to ensure write propagation to before acknowledgment, which must be >= 0
        MongoDB documentation
        w option
      • WriteConcern

        public WriteConcern​(String w)
        Construct an instance with the given tag set-based value for w.
        Parameters:
        w - tag set name, or "majority", representing the servers to ensure write propagation to before acknowledgment. Do not use string representation of integer values for w
        MongoDB documentation
        Tag Sets
        w option
      • WriteConcern

        public WriteConcern​(int w,
                            int wTimeoutMS)
        Constructs an instance with the given integer-based value for w and the given value for wTimeoutMS.
        Parameters:
        w - the w value, which must be >= 0
        wTimeoutMS - the wTimeout in milliseconds, which must be >= 0
        MongoDB documentation
        w option
        wtimeout option
      • WriteConcern

        @Deprecated
        public WriteConcern​(boolean fsync)
        Deprecated. prefer JOURNALED or withJournal(Boolean)
        Constructs an instance with the given value for fsync.
        Parameters:
        fsync - whether or not to fsync
      • WriteConcern

        @Deprecated
        public WriteConcern​(int w,
                            int wTimeoutMS,
                            boolean fsync)
        Constructs an instance with the given integer-based w value, wTimeout in milliseconds, and fsync value.
        Parameters:
        w - the w value, which must be >= 0
        wTimeoutMS - the wTimeout in milliseconds, which must be >= 0
        fsync - whether or not to fsync
        MongoDB documentation
        w option
        wtimeout option
      • WriteConcern

        @Deprecated
        public WriteConcern​(int w,
                            int wTimeoutMS,
                            boolean fsync,
                            boolean journal)
        Constructs an instance with the given integer-based w value, wTimeout in milliseconds, fsync value, and journal value.
        Parameters:
        w - the w value, which must be >= 0
        wTimeoutMS - the wTimeout in milliseconds, which must be >= 0
        fsync - whether or not to fsync
        journal - whether writes should wait for a journaling group commit
        MongoDB documentation
        w option
        wtimeout option
        j option
      • WriteConcern

        @Deprecated
        public WriteConcern​(String w,
                            int wTimeoutMS,
                            boolean fsync,
                            boolean journal)
        Constructs an instance with the given String-based w value, wTimeout in milliseconds, fsync value, and journal value.
        Parameters:
        w - the w value, which must be non-null
        wTimeoutMS - the wTimeout in milliseconds, which must be >= 0
        fsync - whether or not to fsync
        journal - whether writes should wait for a journaling group commit
    • Method Detail

      • getWObject

        public Object getWObject​()
        Gets the w value.
        Returns:
        w, either an instance of Integer or String or null
      • getW

        public int getW​()
        Gets the w value as an integer.
        Returns:
        w as an int
        Throws:
        IllegalStateException - if w is null or not an integer
      • getWString

        public String getWString​()
        Gets the w parameter as a String.
        Returns:
        w as a String
        Throws:
        IllegalStateException - if w is null or not a String
      • getWTimeout

        @Nullable
        public Integer getWTimeout​(TimeUnit timeUnit)
        Gets the wTimeout in the given time unit.
        Parameters:
        timeUnit - the non-null time unit for the result
        Returns:
        the WTimeout, which may be null if a wTimeout has not been specified
        Since:
        3.2
        MongoDB documentation
        wTimeout
      • getWtimeout

        @Deprecated
        public int getWtimeout​()
        Deprecated. Prefer getWTimeout(TimeUnit)
        Gets the wTimeout in milliseconds. If wTimeout has not been specified, returns 0.
        Returns:
        the wTimeout in milliseconds
        MongoDB documentation
        wTimeout
      • getJournal

        public Boolean getJournal​()
        Gets the journal property. The default value is null.
        Returns:
        whether journal syncing is enabled, or null if unspecified.
        Since:
        3.2
        MongoDB documentation
        Journaled
      • getJ

        @Deprecated
        public boolean getJ​()
        Deprecated. Prefer getJournal()
        Gets the journal property. If journal has not been specified, returns false.
        Returns:
        true if journal is true, false if it false or unspecified.
        MongoDB documentation
        Journaled
      • getFsync

        @Deprecated
        public boolean getFsync​()
        Deprecated. Prefer getJournal()
        Gets the fsync property. If fsync has not been specified, returns false.
        Returns:
        true if fsync is true, false if it false or unspecified
      • fsync

        @Deprecated
        public boolean fsync​()
        Deprecated. Prefer getJournal()
        Gets the fsync property. If fsync has not been specified, returns false.
        Returns:
        true if fsync is true, false if it false or unspecified
      • callGetLastError

        @Deprecated
        public boolean callGetLastError​()
        Deprecated. Prefer isAcknowledged()
        Returns true if this write concern indicates that write operations must be acknowledged.
        Returns:
        whether this write concern will result in an an acknowledged write
      • isServerDefault

        public boolean isServerDefault​()
        Gets whether this write concern indicates that the server's default write concern will be used.
        Returns:
        true if this write concern indicates that the server's default write concern will be used
        MongoDB documentation
        getLastErrorDefaults
      • asDocument

        public BsonDocument asDocument​()
        Gets this write concern as a document.
        Returns:
        The write concern as a BsonDocument, even if w &lt;= 0
      • isAcknowledged

        public boolean isAcknowledged​()
        Returns true if this write concern indicates that write operations must be acknowledged.
        Returns:
        true w != null or w > 0 or journal is true or fsync is true
        MongoDB documentation
        Acknowledged
      • valueOf

        public static WriteConcern valueOf​(String name)
        Gets the WriteConcern constants by name (matching is done case insensitively).
        Parameters:
        name - the name of the WriteConcern
        Returns:
        the WriteConcern instance
      • hashCode

        public int hashCode​()
        Overrides:
        hashCode in class Object
      • withW

        public WriteConcern withW​(int w)
        Constructs a new WriteConcern from the current one and the specified integer-based value for w
        Parameters:
        w - number of servers to ensure write propagation to before acknowledgment, which must be >= 0
        Returns:
        the new WriteConcern
        MongoDB documentation
        Replica Acknowledged
      • withW

        public WriteConcern withW​(String w)
        Constructs a new WriteConcern from the current one and the specified tag-set based value for w
        Parameters:
        w - tag set, or "majority", representing the servers to ensure write propagation to before acknowledgment. Do not use string representation of integer values for w
        Returns:
        the new WriteConcern
        See Also:
        withW(int)
        MongoDB documentation
        Tag Sets
      • withFsync

        @Deprecated
        public WriteConcern withFsync​(boolean fsync)
        Deprecated. Prefer withJournal(Boolean)
        Constructs a new WriteConcern from the current one and the specified fsync value
        Parameters:
        fsync - true if the write concern needs to include fsync
        Returns:
        the new WriteConcern
      • withJournal

        public WriteConcern withJournal​(Boolean journal)
        Constructs a new WriteConcern from the current one and the specified journal value
        Parameters:
        journal - true if journalling is required for acknowledgement, false if not, or null if unspecified
        Returns:
        the new WriteConcern
        Since:
        3.2
        MongoDB documentation
        j option
      • withJ

        @Deprecated
        public WriteConcern withJ​(boolean journal)
        Deprecated. Prefer withJournal(Boolean)
        Constructs a new WriteConcern from the current one and the specified journal value
        Parameters:
        journal - true if journalling is required for acknowledgement
        Returns:
        the new WriteConcern
        MongoDB documentation
        j option
      • withWTimeout

        public WriteConcern withWTimeout​(long wTimeout,
                                         TimeUnit timeUnit)
        Constructs a new WriteConcern from the current one and the specified wTimeout in the given time unit.
        Parameters:
        wTimeout - the wTimeout, which must be >= 0 and <= Integer.MAX_VALUE after conversion to milliseconds
        timeUnit - the non-null time unit to apply to wTimeout
        Returns:
        the WriteConcern with the given wTimeout
        Since:
        3.2
        MongoDB documentation
        wtimeout option
      • majorityWriteConcern

        @Deprecated
        public static WriteConcern.Majority majorityWriteConcern​(int wtimeout,
                                                                 boolean fsync,
                                                                 boolean j)
        Create a Majority Write Concern that requires a majority of servers to acknowledge the write.
        Parameters:
        wtimeout - timeout for write operation
        fsync - whether or not to fsync
        j - whether writes should wait for a journal group commit
        Returns:
        Majority, a subclass of WriteConcern that represents the write concern requiring most servers to acknowledge the write