Skip to content

Sync: Full sync options fix#7218

Merged
enejb merged 2 commits intomasterfrom
update/do-not-sync-non-exiting-option
May 25, 2017
Merged

Sync: Full sync options fix#7218
enejb merged 2 commits intomasterfrom
update/do-not-sync-non-exiting-option

Conversation

@enejb
Copy link
Copy Markdown
Member

@enejb enejb commented May 22, 2017

Fixes #7199, lets not sync full sync the options that do not exist.

Currently we send the key to with the null value to when options do not exits. Which is not ideal. It would be much better if we just not sent the key at all. This PR fixed #7199.

Changes proposed in this Pull Request:

  • Remove non-existent options during full sync.

Testing instructions:

  • Do the unit test pass?
    @nabsul Can you test this to make sure this works for you as expected?

Proposed changelog entry for your changes:

Fixes #7199, lets not sync full sync the options that do not exist.
@enejb enejb added [Package] Sync Bug When a feature is broken and / or not performing as intended labels May 22, 2017
@enejb enejb requested review from gititon, lezama and nabsul May 22, 2017 07:49
@jeherve jeherve added the [Status] Needs Review This PR is ready for review. label May 22, 2017
$this->sender->do_full_sync();

$synced_options_event = $this->server_event_storage->get_most_recent_event( 'jetpack_full_sync_options' );
$this->assertEquals( sizeof( $synced_options_event->args ), 2, 'Size of synced potions not as expected' );
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

potions -> options :-)

$this->sender->do_full_sync();

$synced_options_event = $this->server_event_storage->get_most_recent_event( 'jetpack_full_sync_options' );
$this->assertEquals( sizeof( $synced_options_event->args ), 2, 'Size of synced potions not as expected' );
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about we add a little more detail to this test and explicitly check that the two args are foo and bar?

nabsul
nabsul previously requested changes May 24, 2017
Copy link
Copy Markdown
Contributor

@nabsul nabsul left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tested sync with my test store against the sandbox. I observed that with master, non-existing wp options are sent with value false, but with this branch the data was not sent:

Logs from master:

full sync started
Error: option_not_string ["Option woocommerce_unforce_ssl_checkout is not a string: false"]
Error: option_not_string ["Option woocommerce_tax_total_display is not a string: false"]
Error: option_not_string ["Option woocommerce_tax_round_at_subtotal is not a string: false"]
Error: option_not_string ["Option woocommerce_tax_display_shop is not a string: false"]
Error: option_not_string ["Option woocommerce_tax_display_cart is not a string: false"]
full sync complete

Logs from this branch:

full sync started
full sync complete

Besides the unit test comments, this looks good to go.

@enejb
Copy link
Copy Markdown
Member Author

enejb commented May 24, 2017

@nabsul Thanks for the review! I address the issues you had.

@enejb enejb dismissed nabsul’s stale review May 24, 2017 19:25

addressed the isssues

$random_string = wp_generate_password();
foreach ( $this->options_whitelist as $option ) {
$options[ $option ] = get_option( $option );
$option_value = get_option( $option, $random_string );
Copy link
Copy Markdown
Contributor

@gititon gititon May 24, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This worries me a bit because it relies on the option value never being set to the string returned by wp_generate_password(), but I suppose the odds of such a collision actually occurring are so low that it's a non issue.

Copy link
Copy Markdown
Contributor

@gititon gititon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good notwithstanding comment about theoretical collision. Haven't run code/tests because @nabsul did.

@jeherve jeherve added [Status] Ready to Merge Go ahead, you can push that green button! and removed [Status] Needs Review This PR is ready for review. labels May 25, 2017
@enejb enejb merged commit 46157e2 into master May 25, 2017
@matticbot matticbot removed the [Status] Ready to Merge Go ahead, you can push that green button! label May 25, 2017
@enejb enejb deleted the update/do-not-sync-non-exiting-option branch May 25, 2017 15:04
jeherve added a commit that referenced this pull request May 29, 2017
eliorivero pushed a commit that referenced this pull request May 30, 2017
* Changelog: first pass at a changelog for 5.0

* Changelog: delete 4.9 testing list.

* Changelog: update minimum WP version to match ver. in jetpack.php

Fixes #7158

* Changelog: add #6051

* Changelog: add #6753

* Changelog: add #6928

* Changelog: add #6964

* Changelog: add #7014

* Changelog: add #7057

* Changelog: add #7060

* Changelog: add #7068

* Changelog: add #7070

* Changelog: add #7072

* Changelog: add #7071

* Changelog: add release date and post shortlink.

* Changelog: add #7094

* Changelog: add #7100

* Changelog: add #7108

* Changelog: add #7113

* Changelog: add #7123

* Changelog: add #7135

* Changelog: add #7143

* Changelog: add #7151

* Changelog: add #6996

* Changelog: add #7105

* Changelog: add #7132

* Changelog: add #7166

* Changelog: fix typo in 4.9 changelog.

* Changelog: remove older releases' changelogs.

@see p1HpG7-42e-p2

* Changelog: add #7090

* Changelog: add #7095

* Changelog: add #7112

* Changelog: add #7115

* Changelog: add #7122

* Changelog: add #7137

* Changelog: add #7138

* Changelog: add #7140

* Changelog: add #7154

* Changelog: add ##7155

* Changelog: add #7163

* Changelog: add #7167

* Changelog: add #7171

* Changelog: add #7180

* Changelog: add #7181

* Changelog: add #7183

* Changelog: add #7184

* Changelog: add #7189

* Changelog: add #7191

* Changelog: add #7193

* Changelog: add #7198

* Changelog: add #7200

* Changelog: add #7209

* Changelog: add #7212

* Testing list: add instructions for #7115

* Changelog: add #7188

* Changelog: add #7205

* Changelog: add #7225

* Changelog: add #6872

* Changelog: add #7107

* Changelog: add #7118

* Changelog: add #7142

* Changelog: add #7170

* Changelog: add #7210

* Changelog: add #7218

* Changelog: add #7232

* Changelog: add #7211

* Changelog: add #7213

* Changelog: add #7229

* Changelog: add #7230

* Changelog: add #7214

* Draft changelog for 5.0

* Changelog updates: 2nd pass at a clearer changelog.

- Fix typos.
- Use consistent tense and tone across all changelog.
- Remove unclear items.

* Changelog: add #7026

* Changelog: add #7058

* Changelog: add #7125

* Changelog: add #7249

* Changelog: add #7185

* add mentions of image widget migration

* Changelog: add info about new output for CLI command.

* Changelog: add WP version number matching the new Image Widget.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug When a feature is broken and / or not performing as intended [Package] Sync

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Jetpack_Sync_Module_Options::get_all_options() sends non-existing options

5 participants