Skip to main content

Error handling

Fallback on last known strategy

Sometimes client encounter an error while fetching feature from remote Izanami.

In this scenario, client will first try to compute activation locally as a fallback. This will happen even if cache is disabled.

You can however disable this behavior :

IzanamiClient.newBuilder(
IzanamiConnectionInformation
.connectionInformation()
.withUrl("<REMOTE_IZANAMI_URL>/api")
.withClientId("<YOUR_KEY_CLIENT_ID>")
.withClientSecret("<YOUR_KEY_CLIENT_SECRET>")
)
.withErrorStrategy(
failStrategy()
.fallbackOnLastKnownStrategy(false) // disable local computation based on last known state in case of failure
)
.build();

Error strategies

If fallback on last known strategy is disabled or if it can't be done (for script features or never requested features), client will use an error strategy to decide what should be returned.

There are 4 built-in error strategies :

  • NullValue : client will value erroneous features with null (instead of true/false)
CompletableFuture<Boolean> futureActivation = client
.booleanValue(newSingleFeatureRequest("<YOUR_FEATURE_ID>")
.withErrorStrategy(nullValueStrategy()));

futureActivation.thenAccept(System.out::println); // null
  • Fail : client will throw an IzanamiException.

Using fail strategy with multi-feature query will prevent from retrieving activation for all features of the query, even if error only affects a single one of them.

CompletableFuture<Boolean> futureActivation = client
.booleanValue(newSingleFeatureRequest("<YOUR_FEATURE_ID>")
.withErrorStrategy(failStrategy()));

futureActivation.join(); // Will throw
  • Default value : client will use specified value
CompletableFuture<Boolean> futureActivation = client
.booleanValue(newSingleFeatureRequest("<YOUR_FEATURE_ID>")
.withErrorStrategy(defaultValueStrategy(true /* default value for number features*/, "default_value°for_string_features", BigDecimal.TEN /* default value for number features*/)));

futureActivation.thenAccept(System.out::println); // true
  • Callback strategy : client will call specified callback to decide which value to return
CompletableFuture<Boolean> futureActivation = client
.booleanValue(newSingleFeatureRequest("<YOUR_FEATURE_ID>")
.withErrorStrategy(callbackStrategy(
err -> {
// You can do anything you want here
// You'll need to provide one callback by feature type
return CompletableFuture.completedFuture(true);
},
err -> {
// this callback will be used for string features
return CompletableFuture.completedFuture("foo");
},
err -> {
// this callback will be used for number features
return CompletableFuture.completedFuture(BigDecimal.TEN);
}
));
futureActivation.thenAccept(System.out::println);

Definition levels

Error strategies decide what should be returned by the client when it can't compute activation for a given feature. Error strategy can be specified :

  • Globally, for the whole client
IzanamiClient.newBuilder(
IzanamiConnectionInformation
.connectionInformation()
.withUrl("<REMOTE_IZANAMI_URL>/api")
.withClientId("<YOUR_KEY_CLIENT_ID>")
.withClientSecret("<YOUR_KEY_CLIENT_SECRET>")
)
.withErrorStrategy(failStrategy()) // This will be the default for all queries
.build();
  • At query level, for every feature of the query
client.featureValues(
newFeatureRequest()
.withFeatures("<ID_1>", "<ID_2>")
.withErrorStrategy(failStrategy()) // This will apply for each features of this query
);
  • At query's feature level, allowing a different error strategy for each feature
client.featureValues(
newFeatureRequest().withFeatures(
SpecificFeatureRequest.feature("<ID_1>").withErrorStrategy(defaultValueStrategy(true, "foo", null)),
SpecificFeatureRequest.feature("<ID_2>").withErrorStrategy(defaultValueStrategy(false, "bar", BigDecimal.TEN))
)
)

Error strategy priority

Query's feature error strategy has priority over query and global strategies. Query strategy has priority over global strategy.

query feature strategy > query strategy > global strategy

Cache and error strategies behavior

eyJ2ZXJzaW9uIjoiMSIsImVuY29kaW5nIjoiYnN0cmluZyIsImNvbXByZXNzZWQiOnRydWUsImVuY29kZWQiOiJ4nO19V1Mjy7L1+/xcbsV8r4e6VZVlz8tccrz3nrtvXHUwMDEwXHUwMDFhqVx1MDAwMYFcdTAwMWMyuFx1MDAxYue/f5mCQS21UVx1MDAwYlogZlDsXHKM1GqVunNlrsxK838/XG6Fn53HZvDz34WfwUOpWK2UW8X7n/+i5++CVrvSqONLsvfvdqPbKvWOvOp0mu1//9d/9d/BSo3a87uCalBcdTAwMGLqnTZcdTAwMWX3P/jvQuH/ej9Dn9NcbkqdYv2yXHUwMDFh9N7Qe6n/UUbK4We3XHUwMDFh9d7HXG7pjdfCKP56RKW9gJ/XXHTK+PJFsdpcdTAwMGX6r9BTP93j0oq4Llx1MDAwN09me2XBlitLXHUwMDFi1+1u/2MvKtXqfuex2ltWu4Ffpf9au9Nq3Fx1MDAwNMeVcueKPnvo+aR3tVx1MDAxYd3Lq3rQblx1MDAwZryn0SyWKp1HfM731/58XHT+Xeg/80CXmoNi2nvBubXKStM/XHUwMDBivX9GKGmY8MJKIVx1MDAxZIBcdTAwMDU5tLL5RrXRopX9P+GtKMn+2n5cdTAwMTVLN5e4wHq5f1xmcHtRcv1j7l++L3DNtFx1MDAxNcZ67oTEa/56xFVQubzq0NdcdTAwMDPJpJFKXHUwMDE5Wq7VxvRXXHUwMDEy9O6IkFx1MDAxYYSWWvfXSJ/fXFwt96Tjf/v3oVWsXHUwMDA1q/SWerdaXHJfzHr55WL+lqK+XHUwMDFjwcsz/+l/QTp+cVj+wjJcdTAwMThcdTAwMTJccu+Ly/Lsau5gQc9euuvj+UZlc+X1QlxmXGJssdVq3P98feU//0o779HO7Vazuru7ut5q3XYub/12XV5kO+/LX/3r0m2Wi8/CLazgVjivvFx1MDAwZt2LaqV+M3zRqo3STVx1MDAxZlx1MDAwZj9CXHUwMDBiXHUwMDFlXHUwMDBmiDZcdTAwMDWIXHUwMDFhXHUwMDE03lYuTGYgbi2tPjxcdTAwMWTJcun+sVg5qNXWru+Oap9cdETE11xiJFxuLlx1MDAwNZPOWS+5RjH3elxiidpqprg3Tlx1MDAwMv2v3EcgUcchUVpcdTAwMDbGXG5QlitcdTAwMDV4c4aRaL3wWqE6mUIgVqDcPV4+qy7oh0p5rzpcdTAwMTdU5p5KOVx1MDAwMLG5frFzXHUwMDBlO0dcdTAwMGYr8yVwTze35vqo9Vx1MDAwNYFcYtwnXHUwMDAyXHUwMDExOFpcdTAwMDArbHYgLon2nNm/UXfuYVfZjXNT3V1Q01xyRKMs01x1MDAwZaTTKMRcYkQ3hENlOLPcXHUwMDFhjuZQclx1MDAxObZDeeJQWMaFNng7rOJG21iTaFx1MDAxOJdcdTAwMDBOa7SOXHUwMDFhfFx1MDAwNIdoXHUwMDEwJXfaTCFcdTAwMGXtgVx1MDAxMKuusVJd3FxmzPLR/dLRfjNcdTAwMGaDeOic86Xm1tnmXHUwMDE2fzhonZyfbKpmXHUwMDBl573ZXHUwMDE0sztX1/e7h8v7sNpcXLs8PoC7L4hvqV1cIr6RXnGtQlx1MDAwYlx1MDAxOVx1MDAwNW/YmTvkQWBcdTAwMTeOTmun7mj+bmdm9Xa64S24XHUwMDAyZLzce49cdTAwMTiTw2ZcdTAwMTZNXHUwMDFlXHUwMDAyz6Mxxnti8GD9Lnhf9Fx1MDAxZbFmNopnYyNcdTAwMDC2oFx1MDAwMEn5dFx1MDAwMfi3nHWCh84gXHUwMDAyXpT+/WxQq1x1MDAxNe/XW43b1t1ss3HQ8E9ZcbZ/c3N5ub5aM7/2XHUwMDFhO9XlvYXtxe58PjiTskefRF44XHUwMDFi+P5hiCmRXGIxoZ1cdTAwMDOL5Ci7XHSNvZp5YqxcXGxfXHUwMDA1OYPMKFx1MDAwNlx1MDAxMskh8kRvwNlhlJHpylx1MDAwYmWdVrHeblx1MDAxNlsotVGkSYNwXHUwMDA3QPuI5lx1MDAxY81hXGbuZITAKoH014DNXHUwMDAxd1x1MDAwMy9EXHUwMDAwlqes9lfVqHf2K090WyRcdTAwMWZ4dqlYq1RcdTAwMWZcdTAwMDdua0+I8Vwi7naD1mOh0i7UiuWgcNFoXHUwMDE1LoJip9tcblx1MDAxOVx1MDAxMTp0tlq5JFx1MDAxOf9Zwq9cdTAwMTC0XHUwMDA2xL9TKVx1MDAxNauvXHUwMDA31CrlcthcdTAwMDSV8POLlXrQWs1iOlx1MDAxYa3KZaVerFx1MDAxZWRfXHUwMDFlXqFg5ZVcdTAwMWIxqVPB+6w8YtCL8pqEXst7UuT7fs0o8KZrs2mMXGJcdOGBeVx1MDAwYlxiTIXk1sgh/ot8UjKvjfFcdTAwMTZdQPAwMeT21/WKVGeYd1Jz0N56MFx1MDAxMPrw38BcdTAwMDWLzrGYiOcpR1x1MDAxYsw0PDuuQr7VXHUwMDE4eG53iq3OXFylXq7UL1x1MDAwN1x1MDAxN/ZcdTAwMTL9zIKonlx1MDAwNih1aZVcdTAwMWM9XHUwMDBicE5Kr8Aox4VcdTAwMDRcdTAwMTU67LLYJFlneHe1XHUwMDE0eDmtQF9fRL58UC+PXtRx8ejEXVx1MDAwN61Kd+u2WW1fbewvXHUwMDE0y1x0i0JzYLxQnqO3g2ZDW4hblZfWXHUwMDFi7byVXHUwMDBlf0VWVS22O/ONWq3Swau/06jUO8NXuXc5Z1x0/ldBMVwiXHUwMDAy+K3Cr1xy64kmnXGQXHUwMDFi9f8q9GW294/Xv//3X6OPjsh2/90/wr+TXHUwMDE0WrlSrDXq5TiVpmVcIufXXHUwMDFlyIWU2YPc6Xd0Sjk/Xlxc9G2sQeIvvVPDsTXvXHUwMDFjs+jwW1x1MDAwN1x1MDAwMn+I90W5k0g/+lx1MDAxNjHkg4euw6tcdTAwMTJD5ft5SuxtrL+8drwuXHUwMDBlVs6e5lf9UfmuvlU6by99XHUwMDAw608975WqzK3uXuytrp23f1x1MDAxZKpqpVjZPvla3oRKXHUwMDBlyKHseFx1MDAwMTpcZu9R6I2/S1PuTVxihd5cdTAwMDK36Fxug0AuP1x1MDAxY5HDa8BQbeaD3lRK4jXzyInQqbFaeultXHUwMDE0z5pcdTAwMGbDWTiklMo7yFx1MDAwMc/v8ybkXHUwMDE4svo+b2K1XShcdTAwMTVLV0Hhn3pQL/6qXHUwMDA25cJ/T8iRXHUwMDE4YY+GXHUwMDFkideVxawrL1x1MDAwZoLbxM0sz7lSzvHsiN09W7xd3Sq1bmZry6dHpbP6abl2N90uXHUwMDA0woOh+UKwKbRlSNOGXHUwMDAw67xjXG6U5Ki/pJLKXHUwMDBlrSxH799cdTAwMDJDP8Uht1SoQSBcdTAwMTRJ6yNWMCeRT1wiL3Ba2ohPIZyzXHUwMDBl+Vx1MDAxOEwkXG73XHUwMDFlp+IlcKzDXHUwMDAynLNTcfnQUFx1MDAwN7tBmZ9cdTAwMWUumUb5Sdw1VjtcdPxdcelcdTAwMTTHSyjJXHUwMDBiXHUwMDEzPupUXGLm0dtAXSSlVlx1MDAwNoSLfvtMXsXS0eb86fJ+08z9Ol1cdTAwMGW29mfmO/YyflWGSFx1MDAxZu2qau3Q3ZGRNVx1MDAwMVNWO5JJo3HVXFxHlvSVXFxcblx0lnmF7runXHUwMDE4m1x1MDAwZmGPXHUwMDFlM4Iz6z33YLnA64Kcd+RcdFx1MDAxM1x1MDAxMURcdTAwMGYlXHUwMDE4XHUwMDExamfQRDtjteif7kf499u2XCJdYiRGXG6le5tw2fXoRnGpyX1pa8Wb0v6KXHUwMDBm1PKTfJhyv0UpybRcdTAwMDHDpUHYoHhcdTAwMGUpUmtcdTAwMTRTXHUwMDAy7YmiPCVh3qVIk/1cdTAwMTbjXGLcXiutUUX6/ir6gVx1MDAxOVxch0fyxfG2aO59JKJcbig4yOPy4EBcdTAwMWa4k9HcaVx1MDAxZO49lUtru2tOVaq7K7/2XHUwMDBl77L6XHUwMDFl9rEt+fpGvSOO7fzqau20sVMr5+DTrJ+Wl8/Udv18q7i1+FBsViszfi9Xn2ZcdTAwMWOemFxu7ySfXHUwMDA2Qkl1kU1IJyj6nj0gXHUwMDExf5OmXHUwMDFj2FxiXFzDKcdGoUdjjFx1MDAxZFx1MDAwNjbg61x1MDAwNj1cZudBI/jfleyTzpAkMGJcdTAwMTHeeOWQjMkouKP7I0JaXHJI3fj70fxVPJr5alx1MDAwNVx1MDAxN1W4XGI66Dy0J7w5MsJWXHL7NKPWNp5fk1x1MDAxMkh0yTubtC/gnNOQPTkoqNVcdTAwMGZcdTAwMWW6uzdr21x1MDAxN81zO19qyPXm5rRcdTAwMDPXSUZkkbBrwltFz7g10jArNbEvTmk5XHUwMDEzMshcdTAwMTlcdTAwMDOJINFcdTAwMDfDXHUwMDFm/c3mr1x1MDAxMEjcOm1ou99Ybd7WvX46u5JVtb732UZ3gul9XHUwMDFmZXRtKOlgeGNTXHUwMDFirsdJSoi/R3lCd1x1MDAwMmFErYBRuNSif6SNXGLh5SXDVnPmbU7gTY8jKuYojujQXHJDXHUwMDE5cDGMOiaOaFx1MDAxNXJv9TdcdTAwMTndhUr52ar9U293S6VggmHEXHUwMDExxmjY5L6urFx1MDAxMLOw8extXHUwMDEyXkVobz2SiauUXHUwMDEy6JNld3+XTk5XXHUwMDE29OVNrdZcbrRcdTAwMTemfVBcdTAwMGLlPU9lXHUwMDE40TnOwHPw1lx1MDAxMq9cYl2Ol7g/WPR+XHUwMDEx1aBBSeEmh1eQTFxixCt62kZZXHUwMDE1qpJJI8nI3aVWwuVgft9cYtj3XHUwMDA0XGLfXHUwMDA02NOgnYDPanDRSUFnp9FMgubAYodxOPCBecXvTUqOrJRGKW10dpqbTkmmXHUwMDEyeaggXHUwMDE4XHUwMDE33mvOSYKGvVNjXHUwMDA1XHUwMDAzsMY5iuKHUtPzxp1gSLHRQfbaoe1Tnsd4p1xu12Kc5iDxvlx043WkMFxmXHUwMDE0OD5QyPf3xO/TPclCP1I+w1x1MDAxOcfLjO6CM1qT3yBE6LDnWLlj2lx1MDAxOS4pxC/pwMh3z1x1MDAxNL1PN7WFwT1cdTAwMDWNi1FcdTAwMWHZXHUwMDFkOpdGRrdcdTAwMTSAoVpG0saN0lx1MDAxNkXAqMiivlL8Plni6Vx1MDAxMZX1/vl+hH+/Kd6ufKKDICl3XHUwMDA2KFx1MDAxMp1Z7Tmhb/f2XHUwMDFl5p6WruQp8NnmXHUwMDA2XFy6z1R7oz1cdTAwMDTJtWCW3HqUNfyyYljxIeFinFNcdTAwMWFcdTAwMDJcdTAwMTeIXHUwMDAx9S7N9554u7dcZrWzpF1JfD2c8fCs8lxmPS/Dt+srhNvvlzbOr/cuXHUwMDBmXHUwMDE2/frhslqd5ydG3WT10L9uhe04+j9cdTAwMTXdiSlELjGFXGI1jbNei+wpzfE3acpxTfl/6PcrpO7Wi2FHXHUwMDAyvGGaa/T80a+y4Vx1MDAwNKPcXHSN94wjq+KAqsaGN/ReoW2jjoRcdTAwMDXruVx1MDAwZZdcIv7xjlx1MDAwNNrrZrdcdTAwMTNcdTAwMTSKpU7lrthBiS38U0cz3em2XHUwMDBiXHUwMDE3rUbtOYmnTM+1cKGXj1x1MDAxM1xuXHUwMDBijLBikUh8dNnZXHUwMDE2nZPrglTJXHUwMDBlP/1cdTAwMWLqjnunibplhvre+mpb85OTm2tzvHd+sHe22W4vT7fnYrxiylx1MDAxOE+7iEpGUlx1MDAwNdFkMplXfD5cdTAwMWTpUjNtXGbtZaJScaBjMo+8ZOg9XHUwMDE5XFyMXHUwMDE0wKOb5sJwLvHFT1x1MDAwYuB/hOcyTLVcdTAwMTNe+Uok3ihK5TdcdTAwMWVcdTAwMDRcdTAwMTgrXHUwMDFkXGakzMhesqpcdTAwMDMpjdRAV3GkT5AoSvRcdTAwMThcdTAwMTaiPD1cdTAwMDJcdTAwMDOJXHUwMDFlgbC4fGrIkj1cdTAwMDR5UprfXFxprio7t7W+sS3kSfNm73G6mYPgPZdcdTAwMGKvPpco92Gm/XvPwDOLrphVwoC2djLlwjl4XHUwMDA0wiPlkE76r1VLvKJWtlx1MDAwZYgqnV7uXHUwMDA1i9x1l1x1MDAxN4K1Kdi0+yjqXHUwMDBlTichUFImMShcdTAwMTijXHUwMDFjMf5qTjlcdTAwMDItmmwuXHUwMDFkXHUwMDA3RJBHlTmMQOWQLimupPJaO+Pfg8BcdTAwMTHk3aEuSN+2i7J3sLgyMHnY8K9C3lx1MDAwZnuf/8x2/6lcdTAwMTfr5UIr6HRb9ZdcZpUyUvlcYkGeXHUwMDEwf1x1MDAxZmFzhvn7yJWnrDuv3Vx1MDAwN5uy76dcdTAwMTAwXHUwMDEy5Fx1MDAxOPt+6TpwKjm8so4pq5xcdTAwMTLoivtwRv5vXHUwMDEyb1x1MDAxOSCtUlYrocKtNHJHvObMSulcdTAwMDRqXHUwMDFm762MqfdcdTAwMTGSOedRTUujhVx1MDAxN3EsXjveiyr8ySw+h1i/4EaAs0JcdTAwMWKLalxcylDm+mus31qqXHUwMDE4sWhcdTAwMDfQj4VoqD/T/kN6d7jBNSFTd0ajXHJSIJV0MSVccpE1fCVPZSZRwulcdTAwMTGV7TydXHUwMDBimUxtPFwixlx1MDAxYjVGqMJtL2/dXc+viqu9lfvG8nzxRFe3p5vZoGvIhOLo1dHeinbDuYRcdTAwMWWo2pBIXHUwMDBm8npUiu9cIjZcdTAwMTNN7sfXUJ0oP5lcbqmJ+Vx1MDAxNpeVWXu/W3naW5o7ODtqrj+eNU4vsvpcdTAwMTb3jbafOdmabbb5XHUwMDE2LG7Zi1x1MDAwZdc8h+1cdTAwMDYzc9SprcGV21xcLTVcdTAwMWaDZXWoKlx1MDAxObcxfkMySd1/VKKhhORcdTAwMTaCQlx1MDAwM3rR4zTVjb9L041sr5hw1CNFXHUwMDFiZ0woQeJcdTAwMDXZXHUwMDFjXVx1MDAxYWHAo4abaFx1MDAwYpU3JfdTXFzKWfl5m1xyf3Zu/1xiSzXZ3P6UrkfJe/+U9ybtXHUwMDE4TVx1MDAwNtJ141T6XHUwMDFj3DnmtTWWUoOlisT5nOfMXGLtXHLaa6CWZpPzOZRkXHUwMDA2kHiiPVx1MDAxNVKF21x1MDAwNvSdXHUwMDBlhlx1MDAwN3A02lx1MDAxNsFcInFNoUSEXHUwMDE3XHUwMDEwc1JAnE9f0lOOnZCSt1x1MDAwZZKofzr4hqi/XHUwMDEwXHUwMDBlKFx1MDAxNU5zgzYr2ozIIH3Tz9THWtpa/uKuQKLg0SMqcmP6XHUwMDAySWwhecPSUNPvcWJcdTAwMWRLM3xn9mA9cFx1MDAwN9fzM2brtNVtNj+123BcdTAwMDa9I1x1MDAwNFx1MDAxM9JYQV1CZLib8Fx1MDAwYlWgglwibjzRaymcmiBXgJG9TWJynL2jpvt/VXRzq/GxKc7hz8utkk+55Fx1MDAxNGeSQ631XHUwMDE4bb7dysbqndtXa1x1MDAxYmpB1Vx1MDAwZWuzO+dXU76vYCjnXHUwMDA3aOaFVOBEhKMjXGKYRlxuryS1tVx1MDAxMOJ9bb7fW8mHVsZz/Jw8WPlcdTAwMDeW8i13Z/ePLlx1MDAwZVc6pnpcIpf2XHUwMDE3S7/WLjc/wFx1MDAxM0497zsmXHUwMDAw/DZ0OXoub7KZkIxeNFx1MDAxNmi/1Vx1MDAxOPXz8TcpT/DmX8tntWFO97p9+l5XsCH0XHUwMDFhi6/znNCbfylcdTAwMWYoYdDGfqLV/JNL+UZYo1x0lvIlu9ehXHUwMDBiXHUwMDE16Vxi5oGDXHUwMDFiI48mXTFOI811XHUwMDFjWS5lvVx1MDAxYUmR7Kh3rTjjWmpl0evwdoI7ejFNhS16/tJcdTAwMDJojVxcXHUwMDE2TMT2ei005VdNqScteFhYc96+XHUwMDFiw1/mYK2hxsJIVYz3Km6vTDAlXHUwMDFjzTOg/6xW0dB+Ni8+XHUwMDE14KFVUVFcdTAwMTPeWqm8Q2dcdTAwMTJ5XHUwMDFlKLCRZVFKtuNOo1x1MDAxZXdgXHUwMDE0RMuavpJcdTAwMWY/cPSwbPff/CP8e2x9ZpL37oRcdTAwMTGKXHUwMDFiXHUwMDBlY8RcdTAwMGLTXHUwMDE52TQqNI+ibJSijqRaOkThMP/QwEBqjcdxjt7UXHUwMDA0O1x1MDAxY1wiXHUwMDEzMlahXHUwMDE1QdLjbKjSo6/ggCltQHPwXHUwMDE004pcdTAwMTZIXG7iXCIo+u6zvItPVXFZlVx0dSgnXHUwMDAzpbTynuKreH+jKu5tXHUwMDFhbYyUXHUwMDA0qaVcdTAwMDeaXHTl/cDAxtclWJRcdTAwMDeQXHUwMDAyXHUwMDExiMfpmFx1MDAxNotfSZshPFx1MDAxMGjC4/elZljhnpKFwlxmMOpyqIX3XFxcdTAwMTlQXFyNOl1cIlroYfHiKmk8slx1MDAxMVxugIhxs1x1MDAxZFx1MDAxMlx1MDAxYjm4xFx1MDAxMCdwi66KXHUwMDFko/zqWFx1MDAxZlx1MDAwNnfn7a3dVlsv3tRcdTAwMWZcdTAwMTbnXHUwMDFlZvVU60qURM2oxbxxiGTreKSc3EumPaBcdKaMLjc58vemNlx1MDAwZYgzJ5HUfN4smO8uXHUwMDBlhTeALrnbkdLU4YHL7O2OtqtLN3DMN1dOz67OK+ZcdTAwMWP2jpab01xyOnCCeU1cdTAwMTFOVI7hoW+/91x1MDAxNTxcdTAwMTPIiS2gXHUwMDFl5FxuJlx1MDAxNyB5XHUwMDEz6Cz1fLf8b6p4/EqgS8/rS1x1MDAxYuWLVlx1MDAxY03vXHUwMDE43VOuXHUwMDBm7ov3a4uz6263tC6t3ej+mpnyoiFjgFFcdTAwMDIrJdJcYnRcdTAwMDCGnVx1MDAwM+rq61x1MDAxNO09UH9cdTAwMTX5ri295J1cdTAwMDWnXHUwMDE4mlQpkLBSXHUwMDAzXHJcdTAwMWYzQJTasHtpXGZH99h566JFQ0h2Oe2RTMQxmFhin9pf2DtcdGZtaSFQZVx1MDAwMVx1MDAwYmAupMzcQXBCg0nfMUA09bzvXHUwMDE4ePqb1eaoXHUwMDAz32Srw1x1MDAxYl6RMkNcdTAwMTQ/XHUwMDFhiJ19PyP+7k+1xkBzxyQ8XHUwMDBmVSNffLjiXHUwMDAxvVx1MDAxZkaDgIWlXHUwMDE27JNsuOQ8o1x1MDAxMkKa3uCQ9ops7YA1JVx1MDAwMXD5N5nrw3ZQXGJcdTAwMTBPrcKEO1x1MDAxMIwwgJFcbqaUdeXVZCDZn/VUYDpOl6B0bTuNzNpxoK1H4JRcdTAwMTJJfbKGsKq1RKuqqTyF4kVycs1EOHrVKPKc00g8KuKAmGRcdTAwMDJcdTAwMDdMUVx1MDAxMzcjkW0gI4mmXHUwMDE2KMS58Y5P3f5cdTAwMDZi2nAhTVh+PyxTMH1yfWFwj4F71JZI6ST+YayPbjE4XHUwMDA21lNcdTAwMWZcdTAwMTfqVMm/+pCRXHUwMDE0waNHROT65/tcdTAwMTH+PS5NMIl1kWCEXHUwMDEyTrvsXHUwMDFl/Y09uZrVtTNXvjha3SneXFzVntaC6dY7gJddKTTNWtN8l2GvXHUwMDAyTTBD7mBcdTAwMDRqJqMmuYf6pkxB9Ia8XHUwMDA2noeW+SpcdTAwMTTh6yRcblx1MDAwNtVqpdlO8OZTWv5LVHZaj2Hu7yU/dnvtYHnjuL5n1m/2L/ZnPzWQlmX6oOZcZsGHPrTUyL/1UK6RXHUwMDA04Vx1MDAxOc3wXHUwMDEwqPBcdTAwMDT69O/LXHUwMDE0XHUwMDA0bi9KLlxuOoeL0FZTdbjysbt8vdaFyDiEsahcdTAwMDJCe3m/XHUwMDAz2dbR9PlP2+R7fU+MXHUwMDEzO+dcdTAwMGZ21MX8ztrO7Fx0P1952tzcOVx051x1MDAxOURo6esrXHUwMDFm7sQm02KRXHUwMDE4cVx1MDAwNiRcdTAwMDdKiDEyatMvyJRcdTAwMDLFa4ZcdTAwMDLmaV9cXEmhh/rro1vrmMGLQK2RpOP6fd0zk4DCXHUwMDE50lnkXHUwMDAy5MJcdTAwMWHagY8xT4ZiY2BoXG5cdTAwMWFcdTAwMTXW2lxiVlx1MDAwNNVzaGv531izn66kXHUwMDA3qa/ozSXzzlx1MDAxOFx1MDAwZl5wXHUwMDEx3Vx1MDAxMffUq8F7j5KhrVB6RNPgL9v0ayZZ8OhcdTAwMTFcdTAwMTG5MUlx2lRcdTAwMWWZ6I9cdTAwMGLBjaK+XHUwMDA12U10t1x1MDAwNks7l93qwdzc9d25ON+9375bnHLNQ/EzKis23vhet4YhbqzAM2dpmD0gW7FieGlcdTAwMWaczM/BojHOI1r2gbn892KhXGbtXHUwMDE1cDO+Wn2cOd5+6F6KXHUwMDBmaKKbet7F8/bZsZWPv2Bm+XZj7XxeLMivNpZcdTAwMDdS0IvA5UhcdTAwMWXGINixdylP9E5gMI+1ilEvM1DaSVx1MDAxZr7mL/15rWGUOZxcdTAwMGJ8U11b55BEo2fLpURcdTAwMGaaZ+vPS6NYuDF/43zvf+p4sipdZerpVa027ieY1z/CMiVN+lx1MDAwZa0xZoW5VdTZ5KHflPrkjZVjbHunz12eTiusOWeaK9+rPFdCXHLxf+G9Y7QhbZC/gn0n/X+/XHUwMDExRkdE669WUXesXHUwMDFlLp7WV6r6vLOoZvdOUcJ9Nau1TFx1MDAxZiU/8PnTai2NSax8ozpOx8OFrSNzKWMv5pRcdTAwMWJL6jjby6JJQlx1MDAxOajewO48UJZe+WaZjMFa1D5a5Lrc6zyGUXwh+4hm57lXXHUwMDBi/lWpP5uiiZnGXHUwMDEx5lwixjT+Xlxc3NLym1x1MDAxN+uTy0Q8ip9cdTAwMTHjXHUwMDA0j5eONudPl/ebZu7X6XKwtT8z37GXU25cdTAwMTOdXHUwMDAzpr2VyOMtJZxcdTAwMGaB1WnJKM5kPPXuXHUwMDFlXGJEfYZN1NJpXFxxXHUwMDFluc5cdTAwMWZoXHUwMDEzf+3q49Orp4tis/7UWltYt8tPd7d/kU10ofLmSMNYT1x1MDAxOb5jTHaNv5hTblx1MDAxM32vXHUwMDA3tNZW9nKdh6vBrfNM8ZxQlu4/XHUwMDFhJtCPXHUwMDA1XHUwMDA1muM64pIuY+a7UN9cdTAwMTdrtf+7XHUwMDFjyLCBbJdalWZnYuZxhOVIMY/RheWVRFx1MDAxNU7ji3Zg8dbCOGnS6dOvpjGfXHUwMDAxJU4wQL9YU5snpyPD1qhcdTAwMDOLRLxyvFJChcMrXHUwMDEziPooIzlccoZcdTAwMDFcdTAwMDPOxiQ9glCMglNcdTAwMWV1jVFcdTAwMWOiO0bcWIe37I/eMXpDw7XHpVx1MDAxNXFdXHUwMDBlnsz2yoItV5Y2rtvduL2kXlx1MDAxNpVRIChRisyWXHUwMDExLnRYv4BcXFx1MDAxYuG5XHUwMDE2wjgj1NfOozKO0fdEkdLKy9CGKD1cdTAwMDTaNFx1MDAxYTOIXGZcdTAwMTlcdTAwMWNcdKZcdTAwMWV1ukQxpkdEgPtn+1x1MDAxMf49rMie1Ut94XHtoLXRXmis3ZeW5dP942wxpEDjXHUwMDE5Slx1MDAwZuVcYmMkwDRcdTAwMDZcdTAwMDeVXHUwMDFht5FcdTAwMDZnRlx1MDAxOSadNZJmXdJY9ih7XHUwMDFkK90oqmzy0lx1MDAxNp/rX+TDXGL6w2CAXHUwMDAzt9FcdTAwMWG5nmJO7FViXHUwMDA0kVx1MDAwNCOy2KVhXHUwMDA1NbCOXHUwMDFjVVRcXLbV2JRk+lKznnG3flpePlPb9fOt4tbiQ7FZrcz4vSjuhpTUi+dp0LV01F68N1x1MDAxZXd4U8VqzkBcdTAwMTjLe1x1MDAxNVx1MDAxNraPqtdaXHUwMDAwqoe2tpfZ6qk+N4bMSoNcbpk7KYA8R2tCzVx1MDAxYb+B+Fx1MDAwNqv+2lCdOydcdTAwMDB0ZEuBXHUwMDFjiGR8Um9aSi82Wfy9j1x1MDAwMmjOXUpcdTAwMTOlklx1MDAxZVF5jJq5canCe+hP5vHbhEVUx/i/VdxpUNHuOZohkI2iYdeAjMFHuc9bmE2K8mlcdTAwMWZs3J7yWVFemJk7K1+by8uZ2bUsRl9Yb+j7cOrQpqWIXGZcXLVSMesk0Vx1MDAxZTyWhzyht1Vccn/rmlxmRlx1MDAxZu06io9cZmfJh8rleeK+XG6ljDok5ll6VHy00Vx1MDAxZqhhnjqr/4ZcbussaS3pZl9Kxlx1MDAxMTpcYkElRbhU61x1MDAxOXpSXHTWc7RcdTAwMTBYXFyKUGOAV+gxXHUwMDBiyoK2vVJcdTAwMTWjYiuHgVx1MDAxOW6Bc1BcdTAwMWPPXHUwMDExsjffUHyH2ddSoadkolx1MDAwNr63XHUwMDE4kVj/gj4kgM02xftLmv1kmaRHRFx1MDAxYfM0+kmmPT1cdTAwMWKlMFx1MDAxONlQ2lhcdTAwMTCOvCeBbnBMmuxcdTAwMWJcdTAwMWJHyVx1MDAxOaQ6i92Lra35tnRcXGwtd05jc3VxXHUwMDE1ynBA4mQ5+lx1MDAwNlZnal6VM6MozZehvPywc79aOm2BaqyDmr/LxCic9Ki2uHUgQFx03a9/eNFqvehcdTAwMDZlXHUwMDE4O1x1MDAxNFx1MDAxMlx1MDAwNX2kfFx1MDAxM4rJRVx1MDAxMag1XHUwMDA0XHUwMDFm6PRcdTAwMTfueJqc1lxiNMRQZSvX+2ZcdTAwMTS5MIr07lx1MDAxM6mMwlxuJPOOunU6Y4RTw1x1MDAxMTy0PExyXHUwMDEwXFxcdTAwMWF8UYdQ9Fx1MDAxYntcYjfmrHPS9qxcdTAwMWLEjVHs7Vx1MDAwNViDepKKXHUwMDE3ZVxiwd9YfFx1MDAwN6NcdTAwMTBSauN5LKPwUeC+Qlx1MDAxNK1cdTAwMDRIyNZ2Y0yI4nreVtOdbyBcdTAwMDFcZjBcdTAwMGZcdTAwMDbFXHUwMDE2bYpcbpXF9V51TKCgUjmHsZZK6kaeL1HIe69G5TtPjjJ+YFwivavEXHUwMDAwb0B76YSlXHUwMDBl594rXHUwMDE5rW2XqHqMkXiRUMxQP8RU+ORGIzLkXHUwMDFjXHQhki2P0Vx1MDAxZW1EuCXTqI3VdII1nUlHVqBGts5S4oNTVlx1MDAwZedD9LaWPLV8ULRtyT8561xib1xuipc2XytcdTAwMTN3R1x1MDAxY1x1MDAxN8tcdTAwMGLdOV+9vP3Vds3mTXtn5y+qW1x1MDAxMehtJeFMXCIpQMpcdTAwMDBj4Cz+cuaJs0lcdTAwMTSuUJNFiUDzNONdi+GeXGbcKZq/mFx1MDAwZtBGJlx1MDAxZfn+oEdcdTAwMTFXIFx1MDAxZUk88lpTyDmPlIXvvKPeXHUwMDAxQ3lHI4zHXHUwMDA08o6y9IRcdTAwMWLB9lx1MDAxZE1cdTAwMWTWNFrF6fBw9Vx1MDAxN5Em2yFcdTAwMWSNXG7mJtRcdTAwMDG7T/YtdTeU2uFR6LDzuF1DPMT63tBcdTAwMGJcdTAwMTRAL/S3451cdTAwMDfZt9SKgoL8MdraqmSubzVIZOWZss3G5fpavm3SY75cXFx1MDAxZp1SJiyNcOeut65Brm9cdTAwMTg6tqBcdTAwMTRccremX6O5fpKM916NivdcdTAwMTfh+lTCztFsXHUwMDEzlVdcdTAwMGW9XHUwMDE4iFx1MDAwZb2UwPA6XCK3Q6lB+/dcdTAwMWFrnVjMsHV+VfZL2+eyK3nlpHbf3evOL0Z1WUzMUOB9UOB7sy8kjbFcdTAwMWamwUYjTdbSeOvBhjt8f1x1MDAwN1xyJ1x1MDAxNzTU1vbGpsZpKSFStJSyxlx0k6W6a1xcJSXQyX+LkvrDY4Zrs1f21lx1MDAxZFx1MDAxY16v3Z888Sso3Z9cdTAwMWS3MyFcdTAwMGZcYnk0roFcdTAwMTL7tI3s/4PlNDuXozfOaS5NdFx1MDAxM/I76a+QN/Ikt1rZXHUwMDAxPzvcLj9xc1GiXHUwMDFiw7U2k4hcdTAwMDV+Z/3FXHUwMDAxL71bRip9f+7rz1x1MDAwNe3xIUOPTFoj+m4soJeowVx1MDAwYlx1MDAxN1wiZ6/IM4hNTznEVqNcdTAwMWZcdTAwMDBx/F1RNFx1MDAxM1x1MDAwNI36Qv9cdTAwMTFcXF+XfyPxXHUwMDFk/F17KWU40WYgqplcYlDq6makMJkmZX/J7X/qXHUwMDFjhjRcdTAwMGWFl1x1MDAxNJHTXHUwMDE2wm+f0Vx1MDAxYa1ccuBKhTfkmo48XZKI985cdTAwMTaV7s+l707o2729h7mnpSt5XG58trlcdTAwMDGXLoG+c+qfQo5cdTAwMDfQdDLdXHUwMDFm6/HK34VnXvPeNjpQWzpcdTAwMWIjjvlcdTAwMTL4ZllcdTAwMWZf3Vx1MDAxNG9cdTAwMWZm7lx1MDAxZa+b/iFcYjpzXHUwMDBmmWhcdTAwMDSlXHUwMDExUu5cdTAwMTl9XHUwMDE1IyNzXHUwMDE0NG2q0GBkaanuIbrn/01cIlxu+ZNcYspicS6aLviTWtQmclxijuRcdTAwMDNotNZcdTAwMTSpqD+aQ1xcqcrc6u7F3uraefvXoapWipXtk2xcdTAwMWNcdTAwMDJVXGKztFGGXHUwMDFltPfD/SWc58zSXHUwMDE0L2/wRyiVqVx1MDAwZjvuXHUwMDE51ezRIFx1MDAwMeVUXHUwMDFjg6DpzJ5ytqhHXHUwMDA1VSF8ozBcdTAwMDdcdTAwMDJBmeN4XXlsVU/yVFx1MDAxZZqxKKTMNoVuTHBaqd9cdTAwMTbdz5c/JEkkPWZcIsKYp71PsurHxaNcdTAwMTN3XHUwMDFktCrdrdtmtX21sb9QLMdZ9V5hpHA0SFxiXHUwMDE1KPVRMTFWPVwiXHUwMDEyyU01czbvm8ezxePa9n7taH7e3Vx1MDAxZs7tm/pSptJAgV5cYqNBwZ5rsE5EmmOgzUeapqV1Rtvwy9/hucmF56Ry1iCNji1cdTAwMTLww0++jtSTyqN9n8pcdTAwMTDBXHUwMDFmXHUwMDFhnbvi7fWVK5jvVstHc5uz9zttWH3Mgjsp0JtcdTAwMDLuXGY4ysOUw7BcdTAwMTOA7pTQXHUwMDFh6bXlXoamgn1cIq+OZJn8QZiTVJShadpJXGbmTHIyXHUwMDEzzfXm2Xq7fFPq8Sj1j1x1MDAxN5v/s9hs7nfw6rxa8p93leB+LllAf7zglVx1MDAwNDTo8bf//PjP/1x1MDAwNyxio0YifQ==Query is made for featureIs cache enabled ?Client fetches featureDid fetchsucceed ?YesCompute activation status from cachedstrategyUpdate cacheand return fetched activation statusClient fetches featureNoDid fetchsucceed ?YesYesUse error strategyNoIs cachefallback allowed ?Is feature in cache ?Is feature script ?NoYesYesIs feature script ?YesNoNoYesNo