Problem/Motivation

Drupal\field\Tests\Update\FieldUpdateTest and Drupal\views\Tests\Update\EntityViewsDataUpdateTest fail on randomly on 8.1.x / PHP 5.5 and Drupal\comment\Tests\CommentFieldsTest::testCommentInstallAfterContentModule() fails consistently on 8.1.x PHP 5.6. We though we had fixed the latter with #2757427: Array was modified by the user comparison function in ConfigDependencyManager::getDependentEntities() - but it hasn't :(

All of these tests are fixed if core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php is changed in anyway - for example just adding a space to comment!

Drupal\comment\Tests\CommentFieldsTest::testCommentInstallAfterContentModule() fails with

Array was modified by the user comparison function in ConfigDependencyManager::getDependentEntities()

Proposed resolution

No idea

Remaining tasks

User interface changes

N/a

API changes

Data model changes

CommentFileSizeAuthor
#72 2762549-4-72.patch3.22 KBalexpott
#72 62-72-interdiff.txt3.65 KBalexpott
#62 2762549-62.patch2.75 KBFabianx
#60 2762549-60.patch3.25 KBFabianx
#58 2762549-58.patch3.25 KBFabianx
#51 2762549-sorts-51.patch1.49 KBalexpott
#50 2762549-memory-50.patch3.58 KBalexpott
#50 49-50-interdiff.txt3.43 KBalexpott
#49 2762549-memory-49.patch1.16 KBalexpott
#48 2762549-48.patch518 bytesalexpott
#41 2762549-hunch-2-test-only.patch571 bytesalexpott
#40 2762549-hunch-2-just-a-comment.patch1.22 KBalexpott
#38 2762549-hunch-2-oh-dear.patch1.35 KBalexpott
#36 2762549-hunch-2-test-only.patch571 bytesalexpott
#36 2762549-hunch-2.patch1.35 KBalexpott
#35 2762549-hunch.patch1.3 KBalexpott
#20 2762549-3-20.patch842 bytesalexpott
#19 2762549-3-19.patch1.06 KBalexpott
#19 2762549-3.19-test-only.patch518 bytesalexpott
#13 2762549-2-13.patch1007 bytesalexpott
#12 2762549-12.patch1.16 KBalexpott
#11 2762549-11.patch1.41 KBalexpott
#10 2762549-10.patch1.27 KBalexpott
#9 2762549-9.patch1.19 KBalexpott
#7 2762549-7.patch1.06 KBalexpott
#5 2762549-5.patch1.12 KBalexpott
#3 2757427-test-only.patch518 bytesalexpott
Support from Acquia helps fund testing for Drupal Acquia logo

Comments

alexpott created an issue. See original summary.

alexpott’s picture

alexpott’s picture

Status: Active » Needs review
alexpott’s picture

alexpott’s picture

So what I think it happening is a that a PHP notice is being thrown inside of the uasort... specifically inside SortArray::sortByKeyString($a, $b, 'name');

alexpott’s picture

alexpott’s picture

The fact this doesn't happen on 8.2.x is super confusing.

alexpott’s picture

alexpott’s picture

alexpott’s picture

Let's see what happens if this is a closure - suggested by @dawehner

alexpott’s picture

alexpott’s picture

Ok making the sort callbacks static and running full tests.

dawehner’s picture

Status: Needs review » Reviewed & tested by the community

We don't understand why, but basically all versions work, beside the one you would think is the best solution. Maybe should keep that in mind for all our search functions all over the place.

catch’s picture

Status: Reviewed & tested by the community » Fixed

Committed/pushed to 8.2.x and cherry-picked to 8.1.x. Thanks!

  • catch committed 2c3d5ec on 8.2.x
    Issue #2762549 by alexpott: Part 2: Array was modified by the user...

  • catch committed ab53171 on 8.1.x
    Issue #2762549 by alexpott: Part 2: Array was modified by the user...
alexpott’s picture

Status: Fixed » Active

Okay this is weird.. still failing - I think just patching \Drupal\Core\Config\Entity\ConfigDependencyManager fixes the test run - so this looks like something caused by something in the DrupalCI environment... very very odd.

alexpott’s picture

alexpott’s picture

Let's disable opcache and see...

alexpott’s picture

I set up DrupalCI to run locally and ran just this test on php 5.6 with mysql 5.5...

php -v
Command created as exec id ab4e2944
PHP 5.6.7 (cli) (built: Apr  4 2016 17:45:37)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.4-dev, Copyright (c) 1999-2015, by Zend Technologies
HTTP/1.1 200 OK
Content-Type: application/vnd.docker.raw-stream


php /var/www/html/core/scripts/run-tests.sh  --list --php /opt/phpenv/shims/php > /var/www/html/artifacts/testgroups.txt
Command created as exec id ac8a08ed
HTTP/1.1 200 OK
Content-Type: application/vnd.docker.raw-stream


Completed execute:command
Executing execute:testcommand
Executing on container instance b6b9c28c:
cd /var/www/html && sudo -u www-data php /var/www/html/core/scripts/run-tests.sh  --url http://localhost/checkout --dburl mysql://drupaltestbot:drupaltestbotpw@drupaltestbot-db-mysql-5-5/simpletest_1468016831  --color --keep-results --sqlite /var/www/html/results/simpletest.sqlite --concurrency 4 --php /opt/phpenv/shims/php --types "Simpletest,PHPUnit-Unit,PHPUnit-Kernel,PHPUnit-Functional" --class 'Drupal\comment\Tests\CommentFieldsTest'
Command created as exec id 2fb91434

Drupal test run
---------------

Tests to be run:
  - Drupal\comment\Tests\CommentFieldsTest

Test run started:
  Friday, July 8, 2016 - 22:27

Test summary
------------

Drupal\comment\Tests\CommentFieldsTest                       170 passes

Test run duration: 1 min 44 sec

So even using the same docker images I can't reproduce the issue - that points to something underlying on the infrastructure DrupalCI is deployed on.

Mixologic’s picture

Okay, I just got this all setup and was able to reproduce it on a bot, but I was *also* able to reproduce it locally with drupalci.

This looks like we're randomly hitting a php bug, not sure why its only manifesting for 5.6, but it sounds exactly like this: http://stackoverflow.com/questions/3235387/usort-array-was-modified-by-t...

As a test I went ahead and put in @uasort on the angry sort in question, and the tests passed. ugly, for sure, and I have no explanation as to why its *only* php5.6 and *only* 8.1.x, but all of that points to bugs in phpland.

Fabianx’s picture

#22: PHP 5.6 has a lot of weird bugs here and there.

I also have seen at least three opcode related bugs.

#22: Can you try turning off opcache completely (e.g. not load the module) for your local env and see if that makes any difference?

Mixologic’s picture

I shut off opcache and the error persists, then I shut of apcu, and the error goes away (though there are a couple of other errors that werent there before, but not the same uasort error)

catch’s picture

Direct link to the PHP bug from that stackoverflow discussion: https://bugs.php.net/bug.php?id=50688

alexpott’s picture

@Mixologic can you try upping the APCu memory - also can you paste the new errors you got with APCu disabled?

alexpott’s picture

@Mixologic also can you output your local DrupalCI config so I can see how you reproduced the error?

Fabianx’s picture

@all: So the error seems to be when we have reference counting going up due to something allocating memory for it.

If we can give laruence a box with login access and gdb for the test runner we can likely get him to do a quick check for us.

Mixologic’s picture

Im using the vagrant box to run this, so right after I vagrant ssh I execute the following script to get everything setup to run:

#!/bin/bash
export DCI_CheckoutDir=/var/lib/drupalci/web/jenkins-default-newtest/checkout
export DCI_RunScript=/var/www/html/core/scripts/run-tests.sh
export DCI_PHPVersion=5.6
export DCI_JobType=simpletest
export DCI_ComposerInstall=True
export DCI_CoreBranch=8.1.x
export DCI_Patch=2762549-3.19-test-only.patch,.
export DCI_Color=True
export DCI_JunitXml=xml
export DCI_Fetch=https://www.drupal.org/files/issues/2762549-3.19-test-only.patch,.
export DCI_Concurrency=31
export DCI_CoreRepository=git://git.drupal.org/project/drupal.git
export DCI_DBVersion=mysql-5.5
export DCI_WorkingDir=jenktest
export DCI_RunOptions="keep-results;verbose"

After each run I clean everything up with
./drupalci docker-rm containers; sudo rm -rf /var/lib/drupalci/database/* ; sudo rm -rf /var/lib/drupalci/web/jenktest

To look at the results after a drupalci run, I then do:
sqlite3 /var/lib/drupalci/web/jenktest/results/simpletest.sqlite
and
select * from simpletest where status NOT IN ('pass','debug');

To get into the php container so I can adjust settings, I do a
docker ps
Which gives me the web-5.6 container name:

vagrant@vagrant-ubuntu-trusty-64:~/drupalci_testbot$ docker ps
CONTAINER ID        IMAGE                       COMMAND                CREATED             STATUS              PORTS               NAMES
c31f2289e02b        drupalci/web-5.6:latest     "/usr/local/bin/star   7 minutes ago       Up 7 minutes                            naughty_stallman
d81af5eb0d54        drupalci/mysql-5.5:latest   "/bin/bash /opt/star   7 minutes ago       Up 7 minutes                            drupaltestbot-db-mysql-5-5

Then I
docker exec -it naughty_stallman /bin/bash
to get into the container.

I can re-run the command inside the container using the same execution command:

cd /var/www/html && sudo -u www-data php /var/www/html/core/scripts/run-tests.sh --url http://localhost/checkout --dburl mysql://drupaltestbot:drupaltestbotpw@drupaltestbot-db-mysql-5-5/jenkins_default_newtest --verbose --color --keep-results --color --concurrency 31 --sqlite /var/www/html/results/simpletest.sqlite --php /opt/phpenv/shims/php --types "Simpletest,PHPUnit-Unit,PHPUnit-Kernel,PHPUnit-Functional" --all

Inside the container the php.ini file is located at /opt/phpenv/versions/5.6.7/etc/php.ini

The very first line is the apcu.so include, so disabling that, and looking at the test run database (which is now located at

sqlite3 /var/www/html/results/simpletest.sqlite because we're inside the container) and running antother select * from simpletest where status NOT IN ('pass','debug');

Gives us the following:

317|2|Drupal\comment\Tests\CommentFieldsTest|exception|Undefined index: comment<pre class="backtrace">Drupal\comment\Tests\CommentFieldsTest->testCommentFieldLinksNonDefaultName() (Line: 1057)
Drupal\simpletest\TestBase->run(Array) (Line: 730)
simpletest_script_run_one_test('2', 'Drupal\comment\Tests\CommentFieldsTest') (Line: 59)
</pre>|Notice|Drupal\comment\Tests\CommentFieldsTest->testCommentFieldLinksNonDefaultName()|136|/var/www/html/core/modules/comment/src/Tests/CommentFieldsTest.php
318|2|Drupal\comment\Tests\CommentFieldsTest|fail|Value NULL is identical to value 1.|Other|Drupal\comment\Tests\CommentFieldsTest->testCommentFieldLinksNonDefaultName()|137|/var/www/html/core/modules/comment/src/Tests/CommentFieldsTest.php
319|2|Drupal\comment\Tests\CommentFieldsTest|fail|Value NULL is identical to value &#039;/checkout/node/2#new&#039;.|Other|Drupal\comment\Tests\CommentFieldsTest->testCommentFieldLinksNonDefaultName()|138|/var/www/html/core/modules/comment/src/Tests/CommentFieldsTest.php
320|2|Drupal\comment\Tests\CommentFieldsTest|fail| Call to a member function access() on null|PHP Fatal error|Unknown|131|/var/www/html/core/modules/block/src/BlockAccessControlHandler.php

I upped the apcu memory (located at /opt/phpenv/versions/5.6.7/etc/conf.d/apcu.ini) from 2000M to 3000M with apcu enabled and it still gives the same uasort error.

Hopefully that's helpful?

alexpott’s picture

It appears this is also causing a random fail in Drupal\field\Tests\Update\FieldUpdateTest see #2749955-46: Random fails in UpdatePathTestBase tests

alexpott’s picture

alexpott’s picture

Title: Part 2: Array was modified by the user comparison function in ConfigDependencyManager::getDependentEntities() » Drupal\field\Tests\Update\FieldUpdateTest and Drupal\comment\Tests\CommentFieldsTest fail on 8.1.x
Issue summary: View changes
Issue tags: +Random test failure

Fleshing out the issue summary to give all known details.

alexpott’s picture

Title: Drupal\field\Tests\Update\FieldUpdateTest and Drupal\comment\Tests\CommentFieldsTest fail on 8.1.x » Drupal\field\Tests\Update\FieldUpdateTest, Drupal\views\Tests\Update\EntityViewsDataUpdateTest and Drupal\comment\Tests\CommentFieldsTest fail on 8.1.x
Issue summary: View changes
alexpott’s picture

alexpott’s picture

alexpott’s picture

Status: Needs review » Needs work

The last submitted patch, 36: 2762549-hunch-2-test-only.patch, failed testing.

The last submitted patch, 36: 2762549-hunch-2-test-only.patch, failed testing.

alexpott’s picture

alexpott’s picture

Status: Needs review » Needs work

The last submitted patch, 41: 2762549-hunch-2-test-only.patch, failed testing.

Mixologic’s picture

So I spent a ton of time digging on this today.

Here's what I tried, and what happened:

Hoping that they were segfaults caused by stack overflows, I tried setting the ulimit to something much higher than 8192 - 102400. That didnt seem to work, but I wasnt sure if the way I was setting it was getting through the phpenv->php->phpchild process, so I retried on a bot that was using one of the 'official' php 5.5.23 containers (not based off of phpenv). Still had the same issues.

So, on a hunch I upgraded apcu to 4.0.11, and lo and behold, every single test failed in exactly the same way. I tried both HEAD and the commit before that and both had identical failures.

So I think there may be buggy issues with the beta version of apcu we're using, that may somehow be masking the issues we're trying to sort out.

So, what probably needs to happen is to upgrade the containers to use the 4.0.11 version of apcu, and have another environment set up with that because I have a bad feeling that there might be many, many more failures than just this one test. That way we can make it a "targeted supported environment" and keep the current flaky one as our canonical for the time being.

Thoughts?

alexpott’s picture

I think this is extremely tricky... @Mixologic have you managed to put APCu instrumentation on a bot to see what's now going on during a test run?

dawehner’s picture

@Mixologic
It would be especially interesting to see APC fragmentation over time, does that peak somehow right before the crashes?

Mixologic’s picture

Okay, some more data. Running the patch from #41 against current HEAD, and everything passes.

Upgrading apcu from 4.0.7 beta to 4.0.11 stable yields the following for every test:

Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions
Drupal\field\Tests\Update\FieldUpdateTest 463 passes 78 fails 8 exceptions

etc X100.

The failure messages from the resultant sqlite database can be seen here in this gist:

https://gist.github.com/ryanaslett/d7e524f657156607f0b269343a501685

APCu fragmentation and the like might help explain random failures, but this seems like we've got legitimate bugs in the code that is being masked by the fact that we're on an older APCu.

xjm’s picture

Did #2754477: Unexpected config entity delete due to dependency calculations introduce the non-random failure on PHP 5.6?

alexpott’s picture

Let's confirm that a test only patch can cause it...

alexpott’s picture

So let's try the space patch again...

Edit: YAY!!! Putting a space in a file doesn't fix. That helps sanity.

alexpott’s picture

alexpott’s picture

  • catch committed 2c3d5ec on 8.3.x
    Issue #2762549 by alexpott: Part 2: Array was modified by the user...

  • catch committed 2c3d5ec on 8.3.x
    Issue #2762549 by alexpott: Part 2: Array was modified by the user...
xjm’s picture

Issue tags: +Triaged D8 critical

@effulgentsia, @catch, @Cottse, @webchick, @alexpott and I agreed this is critical, because it causes test failures on a supported environment.

The failure of Drupal\comment\Tests\CommentFieldsTest is actually non-random; it always happens on PHP 5.6.

effulgentsia’s picture

The failure of Drupal\comment\Tests\CommentFieldsTest is actually non-random; it always happens on PHP 5.6.

Does this mean it's failing on HEAD in 8.2 and 8.3 as well? #2657684: Refactor BigPipe internals to allow a contrib module to extend BigPipe with the ability to stream anonymous responses and prime Page Cache for subsequent visits is encountering that same failure, I think, but if it's also happening in HEAD, then maybe not that patch's fault?

xjm’s picture

@effulgentsia, yes, you can see this by visiting:
http://drupal.org/node/3060/qa
https://www.drupal.org/pift-ci-job/442327

You can also subscribe via email there to be notified when HEAD fails. I get emails about CommentFieldTest every single day. :)

Previously, the BigPipe issue was showing different failures that are not this one, or so I understood.

Fabianx’s picture

Status: Needs review » Needs work

Needs some more work.

I think we should just use array_multisort() instead of uasort() as its way faster and does not have this bug and also stable sorting by default.

Fabianx’s picture

Lets try this.

--

Credit goes to donquixote for his research on #2757207: Introduce "stable sort by weight" functions to sort arrays (and objects) and #2759479: Proof of concept: Replace uasort() with dedicated stable-sort-by-weight functions, where possible, which was very helpful in converting this, even though for this issue I did go with the simpler approach from the first comment on the array_multisort() documentation (http://php.net/manual/de/function.array-multisort.php).

Status: Needs review » Needs work

The last submitted patch, 58: 2762549-58.patch, failed testing.

Fabianx’s picture

Fabianx’s picture

Status: Needs work » Needs review
Fabianx’s picture

Okay, that works nicely. Lets remove to test only this one test and test them all.

This should be ready for commit, except for Documentation:

- I have no idea how to properly document variable function args (and no time to look right now)
- I don't know right now how we deprecate things for 9.0.0 (i.e. @deprecated or not)

I leave the rest to someone else as the general patch is ready.

Status: Needs review » Needs work

The last submitted patch, 62: 2762549-62.patch, failed testing.

Fabianx’s picture

Status: Needs work » Needs review

Okay, it only solves the Drupal\comment\Tests\CommentFieldsTest, the others are failing randomly still (as seen).

Mile23’s picture

Status: Needs review » Needs work
  1. +++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
    @@ -174,11 +174,40 @@ public function getDependentEntities($type, $name) {
         $graph = $this->getGraph();
    ...
    +    $this->sortGraphByKeys($graph, 'weight', SORT_DESC, SORT_NUMERIC, 'name', SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE);
    ...
    +  protected function sortGraphByKeys(&$graph) {
    

    Shouldn't this be on the Graph class? Then you can say $graph = $this->getGraph()->sortByKeys($etc);

  2. +++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
    @@ -174,11 +174,40 @@ public function getDependentEntities($type, $name) {
    +   * @param ...
    +   *   The arguments to array_multisort().
    

    https://www.drupal.org/coding-standards/docs#types doesn't offer any guidance on arbitrary args to a method.

  3. +++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
    @@ -197,6 +226,8 @@ public function sortAll() {
    +   * Deprecated, will be removed before Drupal 9.0.0.
    
    @@ -218,6 +249,8 @@ protected static function sortGraphByWeight(array $a, array $b) {
    +   * Deprecated, will be removed before Drupal 9.0.0.
    

    "@deprecated in Drupal 8.1.x for removal before Drupal 9.0.0 release. Use [whatever] instead."

    Edit: Actually I'm not sure you need to deprecate them. They're already protected and ConfigDependencyManager doesn't seem to have any subclasses.

Also, I'm not really sure why you marked this issue as novice... :-)

The last submitted patch, 62: 2762549-62.patch, failed testing.

xjm’s picture

Issue tags: -Novice

Yeah not novice. :)

+++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
@@ -174,11 +174,40 @@ public function getDependentEntities($type, $name) {
+   * @param ...
+   *   The arguments to array_multisort().

So I think the ... is correct (we use it elsewhere in core) but it probably needs at least mixed as the type.

However, it's unclear to me from the docs here which args it is to array_multisort(). Is the first parameter still a different array than $graph? Should we just document the structure we expect a little more explicitly?

Basically, I kinda have no idea how to use this method reading the docs or the contents. :P

xjm’s picture

E.g., something like:

@param int $array1_sort_order
  Either SORT_ASC or SORT_DESC.

etc.

However is it actually the same arguments as array_multisort()? There's a string in there too that I think needs to be documented. And would we accept multiple arrays as array_multisort() does, or just one plus flags?

Fabianx’s picture

#65:

1. The graph is no class, but an array that is returned ...

Also this is a critical and such changes should be as less invasive as possible.

2. Thanks!

3. Thanks! I do think we keep BC even for "protected" methods, because you could subclass them in contrib.

#68: Array multisort is very hard to understand, because it allows arbitrary flags in arbitrary order.

We can also use a different syntax, e.g.:

$this->sortGraphByKeys($graph, [
  'weight' => [SORT_DESC, SORT_NUMERIC],
  'name' => [SORT_ASC, SORT_NATURAL | SORT_FLAG_CASE]
]);

and instead of array_multisort() we could assert() that for each key there are exactly 2 arguments given.

Of course we could also get fancy and do:

$this->sortGraphByKeys($graph, [
  'weight' => [ 'order' => SORT_DESC, 'flags'=> SORT_NUMERIC],
  'name' => [ 'order' => SORT_ASC, 'flags' => SORT_NATURAL | SORT_FLAG_CASE]
]);

However I think the previous one is actually easier to read and I don't think it hurts to always specify SORT_ASC, SORT_GENERIC instead of some magic the defaults are SORT_ASC and SORT_GENERIC, so you can skip them ...

Let me know what you think!

Thanks!

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

alexpott’s picture

This looks really good to me. The sorts are now quite well tested. If the new method supports all the ways you can use array_multisort then great. If not let's just introduce two methods and hardcode the arguments. That way there is less API surface area. In fact this might be a better approach because Features had a performance issue with the sorting and having less possible sorts makes it easier to statically cache - see #2765911: Features performance issue.

+++ b/core/lib/Drupal/Core/Config/Entity/ConfigDependencyManager.php
@@ -197,6 +226,8 @@ public function sortAll() {
+   * Deprecated, will be removed before Drupal 9.0.0.

@@ -218,6 +249,8 @@ protected static function sortGraphByWeight(array $a, array $b) {
+   * Deprecated, will be removed before Drupal 9.0.0.

Not quite the right standard. Something like:
@deprecated Will be removed before Drupal 9.0.0 use Blah::sortGraphByKeys instead.

alexpott’s picture

alexpott’s picture

Fabianx’s picture

Status: Needs review » Reviewed & tested by the community

RTBC - ultimatively I would like an easier to understand API, but this is absolutely sufficient for this issue.

catch’s picture

Status: Reviewed & tested by the community » Fixed

Committed/pushed to 8.3.x and cherry-picked to 8.2.x. Thanks!

  • catch committed d20b2b3 on 8.3.x
    Issue #2762549 by alexpott, Fabianx, Mixologic, xjm: Drupal\field\Tests\...

  • catch committed b119273 on 8.2.x
    Issue #2762549 by alexpott, Fabianx, Mixologic, xjm: Drupal\field\Tests\...

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.