Go to file
Boone Gorges 3f7051bf81 In wp_insert_term(), clean up accidental duplicate terms after insert.
In [30056], the UNIQUE index was removed from the 'slug' column of `wp_terms`.
While we have numerous checks in place to avoid the creation of unwanted
duplicate term+term_taxonomy pairs, it's possible that in certain edge cases -
such as during the lag caused by database replication, or a race condition
involving near-simultaneous creation of more than one term - we'll end up
unwittingly inserting two identical rows.

The current changeset minimizes this risk by introducing a failsafe mechanism
into `wp_insert_term()`. After a term and term_taxonomy are INSERTed, we check
to see whether the term just created is a duplicate of an existing term; if so,
we delete the new one and keep the old one. This prevents problems caused by
replication lag, because SELECT queries that take place after an INSERT will
hit the master database; it mitigates race conditions by enforcing that the
term that was created first (ie, the one with the lowest `term_id`) is
always the "canonical" one.

Props nacin, markjaquith.
See #22023, #5809.

git-svn-id: https://develop.svn.wordpress.org/trunk@30238 602fd350-edb4-49c9-b593-d223f7449a82
2014-11-05 00:59:51 +00:00
src In wp_insert_term(), clean up accidental duplicate terms after insert. 2014-11-05 00:59:51 +00:00
tests Introduce term_template param to get_the_taxonomies(). 2014-11-03 18:48:42 +00:00
tools/i18n Fix strict notices in makepot. 2014-08-21 02:53:16 +00:00
.editorconfig .jshintrc is a json file and .editorconfig should treat it like a json file 2014-10-08 19:26:50 +00:00
.gitignore Ignore any local WP Cli config files. 2014-10-28 17:01:22 +00:00
.jshintrc Remove smarttabs from .jshintrc per IRC discussion. see #25187. 2013-11-13 19:23:16 +00:00
.travis.yml PHP 5.6 test failures shouldn't be allowed. 2014-10-06 20:00:54 +00:00
Gruntfile.js Don't cascade autoprefixer output 2014-10-28 20:44:33 +00:00
package.json Update grunt-autoprefixer to 1.0.1 2014-10-28 20:16:32 +00:00
phpunit.xml.dist Only reset taxonomies and post types between tests when running core tests. 2014-10-10 20:25:39 +00:00
wp-cli.yml Introduce default wp-cli.yml for core development. 2014-04-30 21:35:18 +00:00
wp-config-sample.php Remove 'WordPress Language' reference from wp-config-sample.php. 2014-09-09 01:22:05 +00:00
wp-tests-config-sample.php Update wp-tests-config-sample.php to run with WP_DEBUG by default. see #25282. 2013-09-23 16:17:59 +00:00