Plugin Directory

Changeset 3163099


Ignore:
Timestamp:
10/05/2024 09:43:27 AM (18 months ago)
Author:
clonable
Message:

Release 2.2.5

Location:
clonable
Files:
116 added
11 edited

Legend:

Unmodified
Added
Removed
  • clonable/trunk/clonable-wp.php

    r3154512 r3163099  
    55Description: Official plugin for improving your clones made with Clonable.
    66Plugin URI: https://kb.clonable.net/en/introduction/getting-started/wordpress#de-clonable-plug-in-downloaden
    7 Version: 2.2.4
     7Version: 2.2.5
    88Author: Clonable BV
    99Author URI: https://www.clonable.net
     
    104104
    105105define('CLONABLE_NAME', 'Clonable');
    106 define('CLONABLE_VERSION', '2.2.4');
     106define('CLONABLE_VERSION', '2.2.5');
    107107
    108108try {
  • clonable/trunk/objects/CircuitBreaker.php

    r3125005 r3163099  
    33namespace Clonable\Objects;
    44
    5 class CircuitBreaker
    6 {
    7     private const TIME_WINDOW = 60;
     5class CircuitBreaker {
     6    private const HALF_OPEN_TIMEOUT = 60;
    87    private const FAILURE_RATE_THRESHOLD = 5;
    9     private const SUCCESS_RATE_THRESHOLD = 5;
     8    private const SUCCESS_RATE_THRESHOLD = 3;
     9
     10    private const STATE_OPEN = 0;
     11    private const STATE_CLOSED = 1;
     12    private const STATE_HALF_OPEN = 2;
     13
     14    private const OPTION_SUCCESS_COUNT = 'clonable-circuit-breaker-success-count';
     15    private const OPTION_FAILURE_COUNT = 'clonable-circuit-breaker-failure-count';
     16    private const OPTION_OPENED_AT = 'clonable-circuit-breaker-closed-at';
    1017
    1118    private $success_count = 0;
    1219    private $fail_count = 0;
    1320
    14     public function __construct()
    15     {
    16         $this->success_count = get_option("clonable-circuit-breaker-success-count", 0);
    17         $this->fail_count = get_option("clonable-circuit-breaker-fail-count", 0);
     21    public function __construct() {
     22        $this->success_count = intval(get_option(self::OPTION_SUCCESS_COUNT, 0));
     23        $this->fail_count = intval(get_option(self::OPTION_FAILURE_COUNT, 0));
    1824    }
    1925
     
    2228     * @return bool
    2329     */
    24     public function isOpen()
    25     {
    26         return get_transient("clonable-circuit-breaker-open") !== false;
     30    public function isOpen() {
     31        return $this->getState() == self::STATE_OPEN;
     32    }
     33
     34    private function getState(): int {
     35        $opened_at = intval(get_option(self::OPTION_OPENED_AT, 0));
     36
     37        if ($opened_at == 0) {
     38            return self::STATE_CLOSED;
     39        } else if ($opened_at > (time() - self::HALF_OPEN_TIMEOUT)) {
     40            return self::STATE_OPEN;
     41        } else {
     42            return self::STATE_HALF_OPEN;
     43        }
    2744    }
    2845
     
    3451     * @return void
    3552     */
    36     public function handle($is_successful)
    37     {
    38         if ($this->isOpen()) {
    39             return; // if the circuit breaker is open, do not handle.
    40         }
     53    public function handle($is_successful) {
     54        $state = $this->getState();
    4155
    4256        if ($is_successful) {
    43             update_option('clonable-circuit-breaker-success-count', ++$this->success_count);
     57            // Reset failure count
     58            $this->fail_count = 0;
     59            update_option(self::OPTION_FAILURE_COUNT, $this->fail_count, true);
     60
     61
     62            if ($state == self::STATE_HALF_OPEN) {
     63                $this->success_count++;
     64                update_option(self::OPTION_SUCCESS_COUNT, $this->success_count, true);
     65
     66                // Transition from half open to closed.
     67                if ($this->success_count >= self::SUCCESS_RATE_THRESHOLD) {
     68                    update_option(self::OPTION_OPENED_AT, 0, true);
     69                }
     70            }
    4471        } else {
    45             update_option('clonable-circuit-breaker-fail-count', ++$this->fail_count);
    46         }
     72            // Reset success count
     73            $this->success_count = 0;
     74            update_option(self::OPTION_SUCCESS_COUNT, $this->success_count, true);
    4775
    48         if ($this->fail_count >= self::FAILURE_RATE_THRESHOLD) {
    49             if (!$is_successful) {
    50                 update_option('clonable-circuit-breaker-success-count', 0);
    51                 set_transient('clonable-circuit-breaker-open', true, self::TIME_WINDOW);
    52             } elseif ($this->success_count >= self::SUCCESS_RATE_THRESHOLD) {
    53                 update_option('clonable-circuit-breaker-fail-count', 0);
    54                 delete_transient("clonable-circuit-breaker-open");
     76
     77            if ($state == self::STATE_CLOSED || $state == self::STATE_HALF_OPEN) {
     78                $this->fail_count++;
     79                update_option(self::OPTION_FAILURE_COUNT, $this->fail_count, true);
     80
     81                // Transition to open
     82                if ($this->fail_count >= self::FAILURE_RATE_THRESHOLD) {
     83                    update_option(self::OPTION_OPENED_AT, time(), true);
     84                }
    5585            }
    5686        }
     
    6191     * @return void
    6292     */
    63     public function debug()
    64     {
     93    public function debug() {
    6594        echo "<p style='max-width: 50vw'>The circuit breaker is implemented as a performance measure for the subfolder
    6695communication between your site and Clonable. The circuit breaker checks for consecutive errors, if more than five
  • clonable/trunk/readme-da_DK.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Retter fejl med forkert gemmeplacering i sprogkoder.
  • clonable/trunk/readme-de_DE.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Fehler mit falschem Speicherort in Sprach-Tags behoben.
  • clonable/trunk/readme-es_ES.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Corregido error con la ubicación de guardado incorrecta en las etiquetas de idioma.
  • clonable/trunk/readme-fr_FR.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Correction d'un bug avec un emplacement d'enregistrement incorrect dans les balises de langue.
  • clonable/trunk/readme-it_IT.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Correzione del bug relativo alla posizione di salvataggio errata nei tag della lingua.
  • clonable/trunk/readme-nb_NO.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Fikser feil lagringsplassering i språkkoder.
  • clonable/trunk/readme-nl_NL.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Bug met onjuiste opslaglocatie in taaltags opgelost.
  • clonable/trunk/readme-sv_SE.txt

    r3154512 r3163099  
    556.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Åtgärdat fel med felaktig lagringsplats i språktaggar.
  • clonable/trunk/readme.txt

    r3154512 r3163099  
    55Tested up to: 6.6.2
    66Requires PHP: 7.2
    7 Stable tag: 2.2.4
     7Stable tag: 2.2.5
    88License: GPL v2 or later
    99
     
    3232
    3333== Changelog ==
     34v2.2.5
     35Improve circuit breaker logic
     36
    3437v2.2.4
    3538Fix bug with incorrect saving location in language tags.
Note: See TracChangeset for help on using the changeset viewer.