profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/jmikola/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.

avalanche123/Imagine 4137

PHP 5.3 Object Oriented image manipulation library

avalanche123/AvalancheImagineBundle 314

Image manipulation using Imagine and Twig Filters

jmikola/geojson 248

GeoJSON implementation for PHP

jmikola/AutoLogin 96

Faciliates automatic login via a single token for Symfony's Security component.

jmikola/JmikolaAutoLoginBundle 82

Authenticate users in your Symfony app via a single query parameter (e.g. email and newsletter links).

jmikola/JmikolaWildcardEventDispatcherBundle 35

Enhances the Symfony event dispatcher with support for wildcard patterns inspired by AMQP topic exchanges.

jmikola/JmikolaJsAssetsHelperBundle 19

Exposes the AssetsHelper service from Symfony2's templating component to JavaScript, allowing relative or absolute asset URI's to be generated client-side.

jmikola/fb-events-widget 16

An embeddable widget for listing Facebook events.

jmikola/JmikolaInsecureRoutesBundle 13

Removes HTTPS scheme requirements from routes in your Symfony2 app (for dev/test environments).

jmikola/JmikolaImagineBundle 9

Extra filters/loaders to complement AvalancheImagineBundle

push eventjmikola/specifications

Shane Harvey

commit sha 5af2ab77a6e68a4528085504ab6bd1360d30a6c8

DRIVERS-1929 Add missing "hello" to load balanacer spec test (#1071)

view details

Benjamin Rewis

commit sha 0fc8e57f601b2ee7af4417b4a25c42eed6a38730

DRIVERS-521 Use test22 for custom service name endpoint (#1073)

view details

Patrick Freed

commit sha cfe5b5b2450948f1cfae07dcc780602b8b738a22

DRIVERS-1631 Clarify minPoolSize requirement (#1072)

view details

Benjamin Rewis

commit sha 2b0e9ed07446b2a92ac66216d19da59b7f582e69

DRIVERS-1141 Add missing new lines on serverConnectionId spec tests (#1074)

view details

Jeremy Mikola

commit sha 01f16e8484cd7b23f38a8cb97dfc2c237e048884

Fix grammar and indentation for may-use-secondary commands

view details

Jeremy Mikola

commit sha dab6ee68235e34a4a5658287c5b25281d57b575a

Delete obsolete $out aggregation pipeline operator spec

view details

Jeremy Mikola

commit sha 791685303b4317d68032fdd7bbd27ff451c9ac6c

Fix RST warnings in CRUD spec

view details

Jeremy Mikola

commit sha 40cd031e9c0f76a91e129ba4aae80d9993b5cabd

DRIVERS-823: Support $out and $merge on secondaries

view details

Jeremy Mikola

commit sha e3903fa0b38c6512211b1c22869c517196c9b81a

Suggest clarifying documentation for $merge output cursors

view details

Jeremy Mikola

commit sha 8364b74696bcc3b9fbb4a8fd6b2b0a3676081562

Clarify setting SecondaryOk/$readPreference for replica sets

view details

Jeremy Mikola

commit sha f1cf629e929c7677b16441a6c992287c3b495a0d

Consolidate $out/$merge tests and add tests for db-aggregate

view details

Jeremy Mikola

commit sha 5e6ece1eff215df2e29c7227a73a8f4ec887008c

Drivers SHOULD use single selection attempt, but MAY use a second

view details

Jeremy Mikola

commit sha 8fc0c1f95fa7ca7efea50551009383dc6db6640f

mongos cannot combine db-aggregate stages with $out or $merge

view details

Jeremy Mikola

commit sha ce037e6ecdc5b751e868a441f04bafa72f8e3ef7

Clarify concept of an effective read preference

view details

Jeremy Mikola

commit sha 8c0ed95357cf6e0e76fff5499d5c90282e7c4b1a

Update source/crud/crud.rst Co-authored-by: Kevin Albertson <kevin.albertson@10gen.com>

view details

Jeremy Mikola

commit sha a6113b293d1d177eb122b083541b6c73c8910766

Update last modified dates

view details

push time in 3 hours

push eventjmikola/specifications

Benjamin Rewis

commit sha 2b0e9ed07446b2a92ac66216d19da59b7f582e69

DRIVERS-1141 Add missing new lines on serverConnectionId spec tests (#1074)

view details

push time in 3 hours

push eventjmikola/specifications

Jeremy Mikola

commit sha de26d8654eccd6d8449202078179d8ec3afae9cb

Update last modified dates

view details

push time in 5 hours

push eventjmikola/specifications

Jeremy Mikola

commit sha d30128bb5e4446a6981546bc2e352bf975a23051

Update source/crud/crud.rst Co-authored-by: Kevin Albertson <kevin.albertson@10gen.com>

view details

push time in a day

Pull request review commentmongodb/specifications

DRIVERS-823: Support $out and $merge on secondaries

 The ``update`` family of operations require that the update document parameter M The ``replace`` family of operations require that the replacement document parameter MUST NOT begin with an atomic modifier. In practice, this means that introspection needs to happen on that document to enforce this. However, it is enough to only check the first element in the document. If it does not begin with a ``$`` sign but an element later on does, the server will throw an error.  +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+Aggregation Pipelines with Write Stages+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++This section discusses special considerations for aggregation pipelines that+contain write stages (e.g. ``$out``, ``$merge``).+++Returning a cursor on the output collection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++As noted in the documentation for the ``aggregate`` helper earlier in this+document, ``$out`` and ``$merge`` are special pipeline stages that cause no+results to be returned from the server. As such, drivers MAY setup a cursor to+be executed upon iteration against the output collection and return that instead+of an iterable that would otherwise have no results.++Drivers that do so for ``$merge`` MAY remind users that such a cursor may return+more documents than were written by the aggregation (e.g. documents that existed+in the collection prior to ``$merge`` being executed).+++Read preferences and server selection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++Historically, only primaries could execute an aggregation pipeline with ``$out``+or ``$merge``. As of ``featureCompatibilityVersion`` 4.4, secondaries can now+execute such pipelines; however, since drivers do not track+``featureCompatibilityVersion``, executing an aggregation pipeline with ``$out``+or ``$merge`` on a secondary will require a 5.0+ server (i.e. wire version >=+13).++Drivers MUST guarantee the following:++- If an explicit (i.e. per-operation) read preference is specified for an+  aggregation with a write stage, drivers MUST attempt to use it. If that would+  result in a pre-5.0, secondary server being selected, drivers MUST instead+  select a server using a primary read preference.

Added clarification for "effective read preference": https://github.com/mongodb/specifications/pull/1062/files#r716942305

jmikola

comment created time in a day

PullRequestReviewEvent

Pull request review commentmongodb/specifications

DRIVERS-823: Support $out and $merge on secondaries

 The ``update`` family of operations require that the update document parameter M The ``replace`` family of operations require that the replacement document parameter MUST NOT begin with an atomic modifier. In practice, this means that introspection needs to happen on that document to enforce this. However, it is enough to only check the first element in the document. If it does not begin with a ``$`` sign but an element later on does, the server will throw an error.  +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+Aggregation Pipelines with Write Stages+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++This section discusses special considerations for aggregation pipelines that+contain write stages (e.g. ``$out``, ``$merge``).+++Returning a cursor on the output collection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++As noted in the documentation for the ``aggregate`` helper earlier in this+document, ``$out`` and ``$merge`` are special pipeline stages that cause no+results to be returned from the server. As such, drivers MAY setup a cursor to+be executed upon iteration against the output collection and return that instead+of an iterable that would otherwise have no results.++Drivers that do so for ``$merge`` MAY remind users that such a cursor may return+more documents than were written by the aggregation (e.g. documents that existed+in the collection prior to ``$merge`` being executed).+++Read preferences and server selection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++Historically, only primaries could execute an aggregation pipeline with ``$out``+or ``$merge``. As of ``featureCompatibilityVersion`` 4.4, secondaries can now+execute such pipelines; however, since drivers do not track+``featureCompatibilityVersion``, executing an aggregation pipeline with ``$out``+or ``$merge`` on a secondary will require a 5.0+ server (i.e. wire version >=+13).++Drivers MUST guarantee the following:++- If an explicit (i.e. per-operation) read preference is specified for an+  aggregation with a write stage, drivers MUST attempt to use it. If that would+  result in a pre-5.0, secondary server being selected, drivers MUST instead+  select a server using a primary read preference.+- If no explicit read preference is specified but a default read preference is+  available to inherit (e.g. from the Collection), drivers MUST attempt to use+  it. If that would result in a pre-5.0, secondary server being selected,+  drivers MUST instead select a server using a primary read preference.++Drivers SHOULD use a custom server selector to consider server/wire version when+matching a read preference and, if a pre-5.0 secondary would be selected, fall+back to selecting a primary. With this approach, only a single server selection+attempt is needed.++If it is not possible to augment the server selector and a pre-5.0 secondary is+selected, drivers MAY invoke server selection a second time to obtain a primary.+However, if the first attempt results in a server selection timeout, drivers+MUST NOT make a second attempt and MUST propagate the original timeout error. If+the topology type is Single, Sharded, or LoadBalanced, drivers MUST NOT make a+second attempt (there is no benefit in doing so).++Regardless of whether drivers employ a custom server selector or two-attempt+approach, they MUST discern the *effective* read preference for the operation,+which SHALL be be used for specifying the+`$readPreference global command argument <../message/OP_MSG.rst#global-command-arguments>`_+and+`passing read preference to mongos and load balancers <../server-selection/server-selection.rst#passing-read-preference-to-mongos-and-load-balancers>`_+(if applicable). The effective read preference SHALL be discerned as follows:++- In the absence of an explicit or inherited read preference, the effective read+  preference is ``{ "mode": "primary" }``.+- If an explicit or inherited read preference results in selection of an+  ineligible server and selection falls back to a primary, the effective read+  preference is ``{ "mode": "primary" }``.+- If a pre-5.0 mongos or a load balancer backing a pre-5.0 mongos is selected,+  the effective read preference is ``{ "mode": "primary" }``.+- If an explicit or inherited read preference is used and results in selection+  of an eligible server (excluding a pre-5.0 mongos as discussed above), that is+  the effective read preference.

@benjirewis: I rewrote the last paragraph and added this bulleted list to discern what the effective read preference is for populating $readPreference in the command. Please let me know if this addresses your previous questions.

jmikola

comment created time in a day

PullRequestReviewEvent

push eventjmikola/specifications

Jeremy Mikola

commit sha 4d6a5fff81989aceeba39e4074b9abced46bf916

Clarify concept of an effective read preference

view details

push time in a day

push eventjmikola/specifications

Shane Harvey

commit sha 5af2ab77a6e68a4528085504ab6bd1360d30a6c8

DRIVERS-1929 Add missing "hello" to load balanacer spec test (#1071)

view details

Benjamin Rewis

commit sha 0fc8e57f601b2ee7af4417b4a25c42eed6a38730

DRIVERS-521 Use test22 for custom service name endpoint (#1073)

view details

Patrick Freed

commit sha cfe5b5b2450948f1cfae07dcc780602b8b738a22

DRIVERS-1631 Clarify minPoolSize requirement (#1072)

view details

push time in a day

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

push eventjmikola/mongo-php-driver

Jeremy Mikola

commit sha ce6b11d475fb1ff19afed29bcf5b89c200f82440

PHPC-1975: Disable SKIPIF caching for skip_if_not_clean on PHP 8.1 (#1261)

view details

push time in a day

pull request commentmongodb/specifications

DRIVERS-521 Use test22 for custom service name endpoint

The Regenerate JSON Test Files check appears to have failed on a different file: https://github.com/mongodb/specifications/runs/3702404574#step:6:899 so I am assuming that was not introduce in this change.

@benjirewis Assuming the issue is a missing newline at the end of the file, I think that dates back to your earlier commit in https://github.com/mongodb/specifications/commit/9a2f76b501b8dccb5f2a857785c4b4b9c299e188. Several YML/JSON files in that commit are missing newlines if you want to address that in a separate PR and see if that passes CI.

benjirewis

comment created time in 4 days

delete branch jmikola/mongo-php-driver

delete branch : phpc-1975

delete time in 4 days

push eventmongodb/mongo-php-driver

Jeremy Mikola

commit sha ce6b11d475fb1ff19afed29bcf5b89c200f82440

PHPC-1975: Disable SKIPIF caching for skip_if_not_clean on PHP 8.1 (#1261)

view details

push time in 4 days

PR merged mongodb/mongo-php-driver

PHPC-1975: Disable SKIPIF caching for skip_if_not_clean on PHP 8.1

https://jira.mongodb.org/browse/PHPC-1975

+16 -0

0 comment

1 changed file

jmikola

pr closed time in 4 days

PullRequestReviewEvent

push eventjmikola/mongo-php-driver

Jeremy Mikola

commit sha a8ae289500e6fedf7eeb41bf8b9f65b7d0f27b8d

PHPC-1976: Add serviceId to command monitoring events

view details

Jeremy Mikola

commit sha 7b0c5f33cd29a038f9342cabde819d7605aa4b1c

Document env vars for run-tests.sh

view details

Jeremy Mikola

commit sha a8448727091a9c55e789a9782ccfe08bfdf5ed0b

PHPC-1977: Add load balancer test to Evergreen matrix

view details

Jeremy Mikola

commit sha d4b87bdc1bf4ceba3e0ae7fa8490ce90d56cff39

wip PHPC-1977: Temporarily use rhel70-test instead of debian92-test for HAProxy

view details

push time in 6 days

push eventjmikola/mongo-php-driver

Jeremy Mikola

commit sha 5237a75ec90da0b4d8d2c195eeccc5643e45b06f

PHPC-1975: Disable SKIPIF caching for skip_if_not_clean on PHP 8.1

view details

push time in 6 days

Pull request review commentmongodb/mongo-php-driver

PHPC-1975: Disable SKIPIF caching for skip_if_not_clean on PHP 8.1

 require_once __DIR__ . '/basic.inc'; require_once __DIR__ . '/tools.php'; +/**+ * Disables SKIPIF caching (PHP 8.1+).+ */+function skip_if_nocache()

That thought did occur to me when writing this. I agree that disable_skipif_caching is a much better name.

jmikola

comment created time in 6 days

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentmongodb/specifications

DRIVERS-823: Support $out and $merge on secondaries

 The ``update`` family of operations require that the update document parameter M The ``replace`` family of operations require that the replacement document parameter MUST NOT begin with an atomic modifier. In practice, this means that introspection needs to happen on that document to enforce this. However, it is enough to only check the first element in the document. If it does not begin with a ``$`` sign but an element later on does, the server will throw an error.  +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+Aggregation Pipelines with Write Stages+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++This section discusses special considerations for aggregation pipelines that+contain write stages (e.g. ``$out``, ``$merge``).+++Returning a cursor on the output collection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++As noted in the documentation for the ``aggregate`` helper earlier in this+document, ``$out`` and ``$merge`` are special pipeline stages that cause no+results to be returned from the server. As such, drivers MAY setup a cursor to+be executed upon iteration against the output collection and return that instead+of an iterable that would otherwise have no results.++Drivers that do so for ``$merge`` MAY remind users that such a cursor may return+more documents than were written by the aggregation (e.g. documents that existed+in the collection prior to ``$merge`` being executed).+++Read preferences and server selection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++Historically, only primaries could execute an aggregation pipeline with ``$out``+or ``$merge``. As of ``featureCompatibilityVersion`` 4.4, secondaries can now+execute such pipelines; however, since drivers do not track+``featureCompatibilityVersion``, executing an aggregation pipeline with ``$out``+or ``$merge`` on a secondary will require a 5.0+ server (i.e. wire version >=+13).++Drivers MUST guarantee the following:++- If an explicit (i.e. per-operation) read preference is specified for an+  aggregation with a write stage, drivers MUST attempt to use it. If that would+  result in a pre-5.0, secondary server being selected, drivers MUST instead+  select a server using a primary read preference.

I do think the spec should clarify that "falling back to primary" changes both the effective RP and the $readPreference in the command to be primary. Is it possible to test that case with a spec test?

I can amend this language to describe the concept of an effective read preference. As far as testing, I think the current tests that expect $readPreference to be absent is already covering the "fall back to primary" case. A primary read preference never gets forwarded to the server, so its absence in the command document is how we assert that the command is destined for a primary (either directly in a replica set topology or via mongos/LB).

jmikola

comment created time in 6 days

PullRequestReviewEvent

Pull request review commentmongodb/specifications

DRIVERS-823: Support $out and $merge on secondaries

 The ``update`` family of operations require that the update document parameter M The ``replace`` family of operations require that the replacement document parameter MUST NOT begin with an atomic modifier. In practice, this means that introspection needs to happen on that document to enforce this. However, it is enough to only check the first element in the document. If it does not begin with a ``$`` sign but an element later on does, the server will throw an error.  +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+Aggregation Pipelines with Write Stages+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++This section discusses special considerations for aggregation pipelines that+contain write stages (e.g. ``$out``, ``$merge``).+++Returning a cursor on the output collection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++As noted in the documentation for the ``aggregate`` helper earlier in this+document, ``$out`` and ``$merge`` are special pipeline stages that cause no+results to be returned from the server. As such, drivers MAY setup a cursor to+be executed upon iteration against the output collection and return that instead+of an iterable that would otherwise have no results.++Drivers that do so for ``$merge`` MAY remind users that such a cursor may return+more documents than were written by the aggregation (e.g. documents that existed+in the collection prior to ``$merge`` being executed).+++Read preferences and server selection+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~++Historically, only primaries could execute an aggregation pipeline with ``$out``+or ``$merge``. As of ``featureCompatibilityVersion`` 4.4, secondaries can now+execute such pipelines; however, since drivers do not track+``featureCompatibilityVersion``, executing an aggregation pipeline with ``$out``+or ``$merge`` on a secondary will require a 5.0+ server (i.e. wire version >=+13).++Drivers MUST guarantee the following:++- If an explicit (i.e. per-operation) read preference is specified for an+  aggregation with a write stage, drivers MUST attempt to use it. If that would+  result in a pre-5.0, secondary server being selected, drivers MUST instead+  select a server using a primary read preference.+- If no explicit read preference is specified but a default read preference is+  available to inherit (e.g. from the Collection), drivers MUST attempt to use+  it. If that would result in a pre-5.0, secondary server being selected,+  drivers MUST instead select a server using a primary read preference.++Drivers SHOULD use a custom server selector to consider server/wire version when+matching a read preference and, if a pre-5.0 secondary would be selected, fall+back to selecting a primary. With this approach, only a single server selection+attempt is needed.

I think even a one-attempt solution could still end up with the primary, depending how the custom logic is implemented. If we consider @benjirewis's earlier comment about Go's procedure for reducing the list of eligible servers, then I would definitely expect the 5.0 secondary to always be selected; however, a "custom server selector" could just as easily do the random selection between both secondaries (and that wouldn't be any less correct), or end up having to rule out the 5.0 secondary due to latency.

jmikola

comment created time in 6 days

Pull request review commentmongodb/specifications

DRIVERS-1929 Add missing "hello" to load balancer spec test

 tests:             configureFailPoint: failCommand             mode: { times: 1 }             data:-              failCommands: [isMaster]+              failCommands: [isMaster, hello]

I haven't worked on these tests yet, but IIRC this is the same approach used in several SDAM and CMAP tests so I'll assume all is well here.

ShaneHarvey

comment created time in 7 days

PullRequestReviewEvent
PullRequestReviewEvent