Skip to content
Snippets Groups Projects
Unverified Commit 76b86646 authored by Alex Pott's avatar Alex Pott
Browse files

Issue #3163663 by mpp, chrisolof, alexpott, quietone: Too many open files...

Issue #3163663 by mpp, chrisolof, alexpott, quietone: Too many open files issue with migrating multiple files using "download" process plugin
parent 5c78c189
No related branches found
No related tags found
33 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!2074Issue #2707689: NodeForm::actions() checks for delete access on new entities,!1896Issue #2940605: Can only intentionally re-render an entity with references 20 times,!1459Issue #3087632: menu_name max length is too long,!1398Issue #3186992 by hinal05, djsagar, kiran.kadam911, hitvika_verma,...,!1283Issue #2922435: "Add new comment" and "@count comments" links are not following accessibility good practices,!1255Issue #3238922: Refactor (if feasible) uses of the jQuery serialize function to use vanillaJS,!1254Issue #3238915: Refactor (if feasible) uses of the jQuery ready function to use VanillaJS,!1213Issue #3236497: Allow other modules to opt out of security release message from update_page_top,!1185Issue 318778: Rerolled patch.,!1162Issue #3100350: Unable to save '/' root path alias,!1158Draft: Resolve #3161889 "Symfony 5 4",!1073issue #3191727: Focus states on mobile second level navigation items fixed,!10223132456: Fix issue where views instances are emptied before an ajax request is complete,!1018Issue #2793343: Dialog drupalAutoButtons option should be respected on initial load,!1014Issue #3226806: Move filter implementations from filter.module to plugin classes,!957Added throwing of InvalidPluginDefinitionException from getDefinition().,!939Issue #2971209: Allow the MediaLibraryUiBuilder service to use an alternative view display,!878Issue #3221534: throw an exception when IDs passed to loadMultiple() are badly formed,!877Issue #2708101: Default value for link text is not saved,!873Issue #2875228: Site install not using batch API service,!872Draft: Issue #3221319: Race condition when creating menu links and editing content deletes menu links,!866Issue #2845319: The highlighting of the 'Home' menu-link does not respect query strings and fragment identifiers,!844Resolve #3036010 "Updaters",!8293023322 - Contextual Links Style Update,!712Issue #2909128: Autocomplete intermittent on Chrome Android,!617Issue #3043725: Provide a Entity Handler for user cancelation,!579Issue #2230909: Simple decimals fail to pass validation,!560Move callback classRemove outside of the loop,!555Issue #3202493,!485Sets the autocomplete attribute for username/password input field on login form.,!449Issue #2784233: Allow multiple vocabularies in the taxonomy filter,!30Issue #3182188: Updates composer usage to point at ./vendor/bin/composer
...@@ -155,6 +155,10 @@ public function transform($value, MigrateExecutableInterface $migrate_executable ...@@ -155,6 +155,10 @@ public function transform($value, MigrateExecutableInterface $migrate_executable
throw new MigrateException("{$e->getMessage()} ($source)"); throw new MigrateException("{$e->getMessage()} ($source)");
} }
if (is_resource($destination_stream)) {
fclose($destination_stream);
}
return $final_destination; return $final_destination;
} }
......
...@@ -34,7 +34,7 @@ protected function setUp(): void { ...@@ -34,7 +34,7 @@ protected function setUp(): void {
* Tests a download that overwrites an existing local file. * Tests a download that overwrites an existing local file.
*/ */
public function testOverwritingDownload() { public function testOverwritingDownload() {
// Create a pre-existing file at the destination, to test overwrite behavior. // Create a pre-existing file at the destination.
$destination_uri = $this->createUri('existing_file.txt'); $destination_uri = $this->createUri('existing_file.txt');
// Test destructive download. // Test destructive download.
...@@ -47,7 +47,7 @@ public function testOverwritingDownload() { ...@@ -47,7 +47,7 @@ public function testOverwritingDownload() {
* Tests a download that renames the downloaded file if there's a collision. * Tests a download that renames the downloaded file if there's a collision.
*/ */
public function testNonDestructiveDownload() { public function testNonDestructiveDownload() {
// Create a pre-existing file at the destination, to test overwrite behavior. // Create a pre-existing file at the destination.
$destination_uri = $this->createUri('another_existing_file.txt'); $destination_uri = $this->createUri('another_existing_file.txt');
// Test non-destructive download. // Test non-destructive download.
...@@ -60,7 +60,7 @@ public function testNonDestructiveDownload() { ...@@ -60,7 +60,7 @@ public function testNonDestructiveDownload() {
* Tests that an exception is thrown if the destination URI is not writable. * Tests that an exception is thrown if the destination URI is not writable.
*/ */
public function testWriteProtectedDestination() { public function testWriteProtectedDestination() {
// Create a pre-existing file at the destination, to test overwrite behavior. // Create a pre-existing file at the destination.
$destination_uri = $this->createUri('not-writable.txt'); $destination_uri = $this->createUri('not-writable.txt');
// Make the destination non-writable. // Make the destination non-writable.
...@@ -115,7 +115,13 @@ protected function doTransform($destination_uri, $configuration = []) { ...@@ -115,7 +115,13 @@ protected function doTransform($destination_uri, $configuration = []) {
'http://drupal.org/favicon.ico', 'http://drupal.org/favicon.ico',
$destination_uri, $destination_uri,
]; ];
return $plugin->transform($value, $executable, $row, 'foo');
// Assert that number of stream resources in use is the same before and
// after the download.
$initial_count = count(get_resources('stream'));
$return = $plugin->transform($value, $executable, $row, 'foo');
$this->assertCount($initial_count, get_resources('stream'));
return $return;
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment