Skip to content
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

Symfony 6.3@dev Unexpected ini_set(): Session ini settings cannot be changed after headers have already been sent #49387

Closed
alexander-schranz opened this issue Feb 15, 2023 · 23 comments · Fixed by #49610

Comments

@alexander-schranz
Copy link
Contributor

alexander-schranz commented Feb 15, 2023

Symfony version(s) affected

6.3.0@dev (6.2.*@dev works)

Description

Something seems to be merged into Symfony 6.3 branch which currently let our CI fail on it with:

Warning
PHP Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/runner/work/sulu/sulu/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php on line 48
PHP Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent in /home/runner/work/sulu/sulu/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php on line 49

So it looks some changes in the Session handling. Not sure what it could be, shortly looked at the merged Pull Requests I didn't see why it is happening.

I tested out 6.2.*@dev there all seems to work still like expected.

If somebody have a hint which PR could have introduced the error let me know, happy to test it out.

How to reproduce

git clone git@github.com:sulu/sulu.git
cd sulu

composer config minimum-stability dev
composer update

env DATABASE_URL="mysql://root:ChangeMe@127.0.0.1:3306/sulu?serverVersion=8.0.27&charset=utf8mb4" composer bootstrap-test-env
env DATABASE_URL="mysql://root:ChangeMe@127.0.0.1:3306/sulu?serverVersion=8.0.27&charset=utf8mb4" composer test

Possible Solution

Workaround see: #49387 (comment)

Additional Context

The change need to be somewhere between Januaray 25 and February 6 and only Symfony 6.3:

Bildschirmfoto 2023-02-15 um 11 33 19

@MatTheCat
Copy link
Contributor

Seems #49097 is your culprit. Don’t know why though ¯\_(ツ)_/¯

@alexander-schranz
Copy link
Contributor Author

alexander-schranz commented Feb 16, 2023

@MatTheCat That is really strange as we are using default session handler and not a PDO handler as I think 🤔 But did not yet test it out if that PR make the CI fail.

@alessandro-podo
Copy link

if have the same error

   ├ ini_set(): Session ini settings cannot be changed after headers have already been sent
   │
   ╵ /var/www/html/netw-tools/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php:48
   ╵ /var/www/html/netw-tools/var/cache/test/ContainerPPKT75r/getSession_Handler_NativeFileService.php:24
   ╵ /var/www/html/netw-tools/var/cache/test/ContainerPPKT75r/App_KernelTestDebugContainer.php:701
   ╵ /var/www/html/netw-tools/var/cache/test/ContainerPPKT75r/getDoctrine_Orm_Listeners_PdoSessionHandlerSchemaSubscriberService.php:23
   ╵ /var/www/html/netw-tools/var/cache/test/ContainerPPKT75r/App_KernelTestDebugContainer.php:701
   ╵ /var/www/html/netw-tools/vendor/symfony/dependency-injection/Container.php:398
   ╵ /var/www/html/netw-tools/var/cache/test/ContainerPPKT75r/App_KernelTestDebugContainer.php:27
   ╵ /var/www/html/netw-tools/vendor/symfony/dependency-injection/Argument/ServiceLocator.php:40
   ╵ /var/www/html/netw-tools/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:191
   ╵ /var/www/html/netw-tools/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:105
   ╵ /var/www/html/netw-tools/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php:2621
   ╵ /var/www/html/netw-tools/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php:627
   ╵ /var/www/html/netw-tools/vendor/doctrine/doctrine-bundle/DoctrineBundle.php:153
   ╵ /var/www/html/netw-tools/vendor/symfony/http-kernel/Kernel.php:173
   ╵ /var/www/html/netw-tools/vendor/symfony/framework-bundle/Test/KernelTestCase.php:146
   ╵ /var/www/html/netw-tools/vendor/symfony/framework-bundle/Test/KernelTestCase.php:70
   ╵ /var/www/html/netw-tools/tests/UnitTests/Service/Patchliste/PortNormalizerTest.php:25
   ┴
  session:
    storage_factory_id: session.storage.factory.native
    handler_id: null
    cookie_secure: true
    cookie_samesite: lax
    cookie_lifetime: 0 #Nach dem Session ende bereinigen

i dont know how to require symfony at this specific commit. If you can give a hint, i would try it.

@nicolas-grekas
Copy link
Member

The backtrace is interesting thanks.

Because PdoSessionHandlerSchemaSubscriber is registered as a subscriber, ContainerAwareEventManager must instantiate it to know which events should be listened for. This triggers the instantiation of the session.handler service, which is a NativeFileSessionHandler, and this notice when this is done after headers have been sent.

I see two possible fixes:

  • would it be possible to register the service as a listener instead of a subscriber? If yes, that should be the way, and we should do so for all (schema) subscribers in DoctrineBundle
  • another more ad hoc fix would be to pass a Closure to PdoSessionHandlerSchemaSubscriber, defined by a ServiceClosureArgument, to make it lazyly consume its dep. But I'd prefer the other more generic way if possible.

/cc @alli83 in case you'd be up to have a look :)

@alli83
Copy link
Contributor

alli83 commented Feb 23, 2023

yes if no one is ont it already, I would be glad to have a look on it

@alli83
Copy link
Contributor

alli83 commented Feb 25, 2023

@nicolas-grekas yes it's possible de register the service as a listener. By launching

composer test

it seems, indeed, that the error no longer occurs.

is it better to make a first PR only for the PdoSessionHandlerSchemaSubscriber ?

@nicolas-grekas
Copy link
Member

It should be possible to register a subscriber as a listener, right?
Then no need to change any code, only the service registration should be updated.

@alli83
Copy link
Contributor

alli83 commented Feb 25, 2023

it's just config in doctrineBundle and change doctrine.event_listener

but now it's used as a listener the

getSubscribedEvents() 

method checking if sessionHandler variable is set and not null won't be called. so I think we just have to add a quick check. or am I missing something ?

@nicolas-grekas
Copy link
Member

nicolas-grekas commented Mar 2, 2023

I propose renaming all *Subscriber to *Listener, and to deprecate MessengerTransportDoctrineSchemaSubscriber, DoctrineDbalCacheAdapterSchemaSubscriber and RememberMeTokenProviderDoctrineSchemaSubscriber (making them extend their corresponding *Listener)

Doctrine\Common\EventSubscriber should be banned from the bridge because it forces instantiating the event listeners (and their deps) even if they are never called.

@alli83
Copy link
Contributor

alli83 commented Mar 3, 2023

@nicolas-grekas thank you for the clarification on the direction to take

nicolas-grekas added a commit that referenced this issue Mar 6, 2023
… in favor of listeners (alli83)

This PR was merged into the 6.3 branch.

Discussion
----------

[DoctrineBridge] deprecate doctrine schema subscribers in favor of listeners

| Q             | A
| ------------- | ---
| Branch?       | 6.3
| Bug fix?      | yes
| New feature?  | no
| Deprecations? | yes
| Tickets       | Fix #49387
| License       | MIT
| Doc PR        |

As `@nicolas`-grekas explained in #49387 (comment) :

" Because PdoSessionHandlerSchemaSubscriber is registered as a subscriber, ContainerAwareEventManager must instantiate it to know which events should be listened for. This triggers the instantiation of the session.handler service, which is a NativeFileSessionHandler, and this notice when this is done after headers have been sent."

It was therefore decided to change all the doctrine schema subscribers in favor of listeners in order to avoid this kind of problem.

Being already present before Symfony 6.3,
`MessengerTransportDoctrineSchemaSubscriber`, `DoctrineDbalCacheAdapterSchemaSubscriber` and `RememberMeTokenProviderDoctrineSchemaSubscriber`have been deprecated.

TODO:
- [ ] : update DoctrineBundle => in progress

Commits
-------

787d569 [DoctrineBridge] deprecate doctrine schema subscribers in favor of listeners
@alexander-schranz
Copy link
Contributor Author

I tested it locally as we currently has another error with @dev unrelated to symfony. Locally now did all work again correctly and not longer the ini_set error shown.

Thx for fixing this 👍.

fabpot added a commit that referenced this issue Apr 8, 2023
…s to ContainerAwareEventManager (alli83)

This PR was merged into the 6.3 branch.

Discussion
----------

[DoctrineBridge] Deprecate passing doctrine subscribers to ContainerAwareEventManager

| Q             | A
| ------------- | ---
| Branch?       | 6.3
| Bug fix?      | no
| New feature?  | no
| Deprecations? | yes
| Tickets       | Fix #49586
| License       | MIT
| Doc PR        |

Following issue #49586, this PR aims to deprecate passing doctrine subscribers to ContainerAwareEventManager. As mentioned, "[#[AsDoctrineListener]]... is a way better alternative anyway."

Following #49387 (comment),  in PR #49610 DoctrineSchemaSubscribers have already been deprecated in favor of listeners.

Commits
-------

c08780e [DoctrineBridge] Deprecate passing Doctrine subscribers to ContainerAwareEventManager, use listeners instead
@alexander-schranz
Copy link
Contributor Author

alexander-schranz commented Apr 27, 2023

I'm running again into this issue not sure since when as our CI against @dev was failing because of a unrelated doctrine issue since a longer time, but that issues seems now be gone and this error did appear again:

Bildschirmfoto 2023-04-27 um 11 56 58

It can be reproduced again with:

git clone git@github.com:sulu/sulu.git
cd sulu

composer config minimum-stability dev
composer update

env DATABASE_URL="mysql://root:ChangeMe@127.0.0.1:3306/sulu?serverVersion=8.0.27&charset=utf8mb4" composer bootstrap-test-env
env DATABASE_URL="mysql://root:ChangeMe@127.0.0.1:3306/sulu?serverVersion=8.0.27&charset=utf8mb4" composer test

@nicolas-grekas
Copy link
Member

nicolas-grekas commented May 2, 2023

The issue is in gedmo/doctrine-extensions/src/Tree/Entity/Repository/AbstractTreeRepository.php, which calls $em->getEventManager()->getAllListeners() and force the instantiation of all listeners in the constructor, breaking laziness.

On your side, you might want to double check why the native session storage is used for tests, while the mock one should be, isn't it?

@alexander-schranz
Copy link
Contributor Author

Thx that you already did have a look at this. Did sadly not yet have time for a deeper debug and create the issue as discuss. Just a question which did popup when I see the stacktrace, should the PDOSessionListener not only be registered when be used?

Our tests normally should run on mocked session:

Does I understand it correctly the PDOSessionListener does inject the SessionHandler which has the NativeSessionStorage in it which access the session inside its constructor?

Where is the PDOSessionListener currently registered as a service?

@alexander-schranz
Copy link
Contributor Author

alexander-schranz commented Jun 21, 2023

Why I think it would be good if the PDOSessionListener is only registered when PDO session is used. I currently found a workaround to fix the issue which did only appear with the SuluTestKernel (used by bundles not projects). I had to manually setting the handler_id: null e.g.:

framework:
    session:
        storage_factory_id: session.storage.factory.native
        handler_id: ~ # this was missing

when@test:
    session:
        storage_factory_id: session.storage.factory.mock_file
        handler_id: ~ # this was missing

This way the error seems to disappear.

@hellomedia
Copy link
Contributor

hellomedia commented Jun 22, 2023

Getting the same error after upgrading to sf 6.3 yesterday, when I run

bin/console doctrine:migrations:migrate

error:

In NativeFileSessionHandler.php line 49:
Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent

Error does not happen when visiting the site.

I have 2 doctrine listeners, registered with

#[AsEntityListener(event: Events::prePersist, method: 'prePersist', entity: Invoice::class, lazy: true)]

Any hint on where to look ?

logs:

[2023-06-22T15:46:12.001789+02:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::build()" might add "void" as a native return type declaration in the future. Do the same in child class "Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::build()\" might add \"void\" as a native return type declaration in the future. Do the same in child class \"Doctrine\\Bundle\\MigrationsBundle\\DoctrineMigrationsBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /data/www/vendor/symfony/error-handler/DebugClassLoader.php:337)"} []
[2023-06-22T15:46:12.003433+02:00] deprecation.INFO: User Deprecated: Method "Symfony\Component\HttpKernel\Bundle\Bundle::build()" might add "void" as a native return type declaration in the future. Do the same in child class "Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle" now to avoid errors or add an explicit @return annotation to suppress this message. {"exception":"[object] (ErrorException(code: 0): User Deprecated: Method \"Symfony\\Component\\HttpKernel\\Bundle\\Bundle::build()\" might add \"void\" as a native return type declaration in the future. Do the same in child class \"Stof\\DoctrineExtensionsBundle\\StofDoctrineExtensionsBundle\" now to avoid errors or add an explicit @return annotation to suppress this message. at /data/www/vendor/symfony/error-handler/DebugClassLoader.php:337)"} []
[2023-06-22T15:46:12.112370+02:00] doctrine.INFO: Connecting with parameters array{"driver":"pdo_pgsql","host":"pgsql","port":5432,"user":"foo","password":"<redacted>","driverOptions":[],"serverVersion":"11","defaultTableOptions":[],"dbname":"foo","charset":"utf8"} {"params":{"driver":"pdo_pgsql","host":"pgsql","port":5432,"user":"foo","password":"<redacted>","driverOptions":[],"serverVersion":"11","defaultTableOptions":[],"dbname":"foo","charset":"utf8"}} []
[2023-06-22T15:46:12.121781+02:00] deprecation.INFO: User Deprecated: Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead at /data/www/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:195)"} []
[2023-06-22T15:46:12.122553+02:00] deprecation.INFO: User Deprecated: Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead {"exception":"[object] (ErrorException(code: 0): User Deprecated: Since symfony/doctrine-bridge 6.3: Using Doctrine subscribers as services is deprecated, declare listeners instead at /data/www/vendor/symfony/doctrine-bridge/ContainerAwareEventManager.php:195)"} []
[2023-06-22T15:46:12.123141+02:00] doctrine.DEBUG: Executing query: SELECT CURRENT_DATABASE() {"sql":"SELECT CURRENT_DATABASE()"} []
[2023-06-22T15:46:12.126925+02:00] doctrine.DEBUG: Executing statement: SELECT quote_ident(table_name) AS table_name,        table_schema AS schema_name FROM information_schema.tables WHERE table_catalog = ?   AND table_schema NOT LIKE 'pg\_%'   AND table_schema != 'information_schema'   AND table_name != 'geometry_columns'   AND table_name != 'spatial_ref_sys'   AND table_type = 'BASE TABLE' (parameters: array{"1":"hellokot_upgrade"}, types: array{"1":2}) {"sql":"SELECT quote_ident(table_name) AS table_name,\n       table_schema AS schema_name\nFROM information_schema.tables\nWHERE table_catalog = ?\n  AND table_schema NOT LIKE 'pg\\_%'\n  AND table_schema != 'information_schema'\n  AND table_name != 'geometry_columns'\n  AND table_name != 'spatial_ref_sys'\n  AND table_type = 'BASE TABLE'","params":{"1":"hellokot_upgrade"},"types":{"1":2}} []
[2023-06-22T15:46:12.130732+02:00] doctrine.DEBUG: Executing query: SELECT schema_name FROM   information_schema.schemata WHERE  schema_name NOT LIKE 'pg\_%' AND    schema_name != 'information_schema' {"sql":"SELECT schema_name\nFROM   information_schema.schemata\nWHERE  schema_name NOT LIKE 'pg\\_%'\nAND    schema_name != 'information_schema'"} []
[2023-06-22T15:46:12.131792+02:00] doctrine.DEBUG: Executing query: SHOW search_path {"sql":"SHOW search_path"} []
[2023-06-22T15:46:12.132563+02:00] doctrine.DEBUG: Executing query: SELECT CURRENT_DATABASE() {"sql":"SELECT CURRENT_DATABASE()"} []
[2023-06-22T15:46:12.133078+02:00] doctrine.DEBUG: Executing statement: SELECT quote_ident(table_name) AS table_name,        table_schema AS schema_name FROM information_schema.tables WHERE table_catalog = ?   AND table_schema NOT LIKE 'pg\_%'   AND table_schema != 'information_schema'   AND table_name != 'geometry_columns'   AND table_name != 'spatial_ref_sys'   AND table_type = 'BASE TABLE' (parameters: array{"1":"hellokot_upgrade"}, types: array{"1":2}) {"sql":"SELECT quote_ident(table_name) AS table_name,\n       table_schema AS schema_name\nFROM information_schema.tables\nWHERE table_catalog = ?\n  AND table_schema NOT LIKE 'pg\\_%'\n  AND table_schema != 'information_schema'\n  AND table_name != 'geometry_columns'\n  AND table_name != 'spatial_ref_sys'\n  AND table_type = 'BASE TABLE'","params":{"1":"hellokot_upgrade"},"types":{"1":2}} []
[2023-06-22T15:46:12.142731+02:00] deprecation.INFO: User Deprecated: Doctrine\DBAL\Schema\PostgreSQLSchemaManager::listTableDetails is deprecated. Use introspectTable() instead. (PostgreSQLSchemaManager.php:70 called by AbstractSchemaManager.php:614, https://github.com/doctrine/dbal/pull/5595, package doctrine/dbal) {"exception":"[object] (ErrorException(code: 0): User Deprecated: Doctrine\\DBAL\\Schema\\PostgreSQLSchemaManager::listTableDetails is deprecated. Use introspectTable() instead. (PostgreSQLSchemaManager.php:70 called by AbstractSchemaManager.php:614, https://github.com/doctrine/dbal/pull/5595, package doctrine/dbal) at /data/www/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php:209)"} []
...
[2023-06-22T15:46:12.147706+02:00] deprecation.INFO: User Deprecated: Passing $database to AbstractSchemaManager::listTableColumns() is deprecated. (AbstractSchemaManager.php:248 called by PostgreSQLSchemaManager.php:81, https://github.com/doctrine/dbal/issues/5284, package doctrine/dbal) {"exception":"[object] (ErrorException(code: 0): User Deprecated: Passing $database to AbstractSchemaManager::listTableColumns() is deprecated. (AbstractSchemaManager.php:248 called by PostgreSQLSchemaManager.php:81, https://github.com/doctrine/dbal/issues/5284, package doctrine/dbal) at /data/www/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php:209)"} []
...
[2023-06-22T15:46:12.156169+02:00] deprecation.INFO: User Deprecated: Doctrine\DBAL\Schema\Table::getPrimaryKeyColumns is deprecated. Use getPrimaryKey() and Index::getColumns() instead. (Table.php:820 called by Table.php:708, https://github.com/doctrine/dbal/pull/5731, package doctrine/dbal) {"exception":"[object] (ErrorException(code: 0): User Deprecated: Doctrine\\DBAL\\Schema\\Table::getPrimaryKeyColumns is deprecated. Use getPrimaryKey() and Index::getColumns() instead. (Table.php:820 called by Table.php:708, https://github.com/doctrine/dbal/pull/5731, package doctrine/dbal) at /data/www/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php:209)"} []
[2023-06-22T15:46:12.158115+02:00] deprecation.INFO: User Deprecated: Column::getCustomSchemaOptions() is deprecated. Use getPlatformOptions() instead. (Column.php:442 called by Comparator.php:677, https://github.com/doctrine/dbal/pull/5476, package doctrine/dbal) {"exception":"[object] (ErrorException(code: 0): User Deprecated: Column::getCustomSchemaOptions() is deprecated. Use getPlatformOptions() instead. (Column.php:442 called by Comparator.php:677, https://github.com/doctrine/dbal/pull/5476, package doctrine/dbal) at /data/www/vendor/doctrine/deprecations/lib/Doctrine/Deprecations/Deprecation.php:209)"} []
...
...
...
[2023-06-22T15:46:12.395259+02:00] doctrine.DEBUG: Executing query: SELECT attnum, attname FROM pg_attribute WHERE attrelid=29677 AND attnum IN (3) ORDER BY attnum ASC {"sql":"SELECT attnum, attname FROM pg_attribute WHERE attrelid=29677 AND attnum IN (3) ORDER BY attnum ASC"} []
[2023-06-22T15:46:12.398375+02:00] doctrine.DEBUG: Executing query: SHOW search_path {"sql":"SHOW search_path"} []
[2023-06-22T15:46:12.625958+02:00] doctrine.DEBUG: Executing query: SHOW search_path {"sql":"SHOW search_path"} []
[2023-06-22T15:46:12.659511+02:00] console.CRITICAL: Error thrown while running command "doctrine:migrations:diff". Message: "Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent" {"exception":"[object] (ErrorException(code: 0): Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent at /data/www/vendor/symfony/http-foundation/Session/Storage/Handler/NativeFileSessionHandler.php:49)","command":"doctrine:migrations:diff","message":"Warning: ini_set(): Session ini settings cannot be changed after headers have already been sent"} []
[2023-06-22T15:46:12.660074+02:00] console.DEBUG: Command "doctrine:migrations:diff" exited with code "1" {"command":"doctrine:migrations:diff","code":1} []
[2023-06-22T15:46:12.668399+02:00] doctrine.INFO: Disconnecting [] []

@alexander-schranz
Copy link
Contributor Author

alexander-schranz commented Jun 22, 2023

@hellomedia how doey your config/packages/framework.yaml framework.session configuration look like?

@hellomedia
Copy link
Contributor

framework:
    session:
        handler_id: session.handler.native_file
        save_path: "%kernel.project_dir%/var/sessions/"

Thanks @alexander-schranz . As you suggested, setting handler_id to null fixes the error, but it also change the way sessions are stored, doesn't it ?

@nicolas-grekas Is this the right way to handle this ?

@alli83
Copy link
Contributor

alli83 commented Jun 23, 2023

Why I think it would be good if the PDOSessionListener is only registered when PDO session is used

@alexander-schranz maybe I could add a tag for PdoSessionHandler and target only this one or check and process it in a compiler pass in DoctrineBundle (injectAdapters method) ?

@nicolas-grekas what do you think?

@nicolas-grekas
Copy link
Member

No need for a new tag, but an attribute on the existing one would be nice, yes.

@hellomedia
Copy link
Contributor

hellomedia commented Jun 23, 2023

@alli83 should I open a separate issue ?

NB: I can try to help with the PR but this is a bit outside of my comfort zone...

@alli83
Copy link
Contributor

alli83 commented Jul 4, 2023

sorry for the late reply. if it's not too late, I'm happy to have a look at it.

@hellomedia
Copy link
Contributor

hellomedia commented Jul 4, 2023

@alli83 thanks.

It's not blocking for me, as doctrine:migrations:diff is only necessary in dev, and changing the session storage "fixes" the bug. So when I need to create a migration in dev, I temporarily change the session storage config.

But I wonder if everyone on 6.3 will experience this. In which case a fix would probably make sense.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants