convoy-gluster UI not create volume

I'm trying to create a convoy-gluster volume through UI but, after the creation, no volumes are listed:

There are no error messages. It simply does't show created volumes and I don't know if they are effectively created on storage pool.
I'm using RancherOS 0.4.2 on my host and on the virtual machine that rancher server is running.
What logs do you want to help the analysis?

Have you tried refreshing? You could also look in the API. To check if they exist, you can go to the endpoint for your environment by going to the dropdown in your avatar and selecting API&Keys. Click on that endpoint and search for volumes. Click on volumes. You should be able to see any of the volumes that you have created.
Note: Volumes are only showing up when they are actually mounted in a service/container. This will change in the next release of Rancher.

Exactly the same problem for me.
I have upgraded all hosts (including the Rancher-Server host) to Docker 1.9.1, CoreOS 899, and running Rancher-Server 0.51
Checking via the API, I can see (and remove) the old orphaned storage pools.  However there are no volumes listed for the convoy-nfs storage pool (I am using NFS for testing but I get the same problems when using Convoy-gluster as well).  Also, I cannot remove orphaned storage pools from the UI ( #3171 or #2893  I think)
However, if I try to create a new volume called 'test', then the UI tells me "Validation failed in API: name is not unique" as I previously used this.  Try with a different name, and I get no error message, but no volume appears in the UI. #2796 maybe, or #2822 - if so, should be fixed in next version.
If I create a new container, mounting 'test:/mnt', then it does in fact mount the test subdir under the Convoy-NFS mount; however there is still nothing in the Storage Pool UI.
Hopefully this will work more clearly under 0.55 when it is released.

I could confirm what @sshipway said about the API.

I've tried 0.56-rc1 and it seems to fix the issue.  Very strangely, after revering to 0.51, the volumes are displayed corretcly!  I suspect 0.51 omitted setting something up in the database that 0.56 fixed.  However, in the process of going back the convoy-gluster stack was somehow borken and needed to be recreated (though the volumes were not deleted in the process)
I'm not moving to a *-rc version for stability reasons, so waiting for the next non-rc release.

0.56.0 fixed the issue... but brought in the networking problems.
Strangely, 0.56.1 fixed the network problems, but now we're back to the invisible storage volumes.

@sshipway Did you also update your template to the v0.2 of the template for convoy-gluster? There were some internal changes between the versions that required a template change as well for convoy-gluster.

@deniseschannon - Yes; in fact I re-created the convoy-nfs setup (we use NFS, not gluster).  The mounts work from containers, and I cannot create new volumes with the new names, but the volumes are not shown in the UI.  Under 0.56.0 they were shown, for some reason.
I don't know if this is related to the hostname change issue which came along at the same time?

@galindro It looks like you were hitting a duplicate of this: https://github.com/rancher/rancher/issues/2763 Also, we added a new template of convoy-gluster and in conjunction with v0.56.1 you should only be hitting the duplicate. There were some other known issues in v0.51.0 with storage pools and UI, but have been resolved with v0.56.1 and the new template of convoy-gluster.
@sshipway Just to confirm, you were using the new template (v2) of convoy-nfs? When you say you cannot create new volumes, are you trying the "Add Volume" from the UI. If so, you might be hitting the same bug and need to just refresh.
Note: I am actually running a v0.57.0-rcx version, but I believe it should be the same in v0.56.1.

I am using v0.2 of the convoy-nfs.template.
Creating new volumes using the 'Add volume' the volume is invisible until I refresh; then it appears as 'requested'.
Creating a new volume by creating a container with a convoy-nfs driver and mapping of 'testvol:/mnt' creates the directory i nthe NFS but it is not visible in the UI.
There are a large number of defined volumes (from previous tests) visible in the API, which are not present on disk and not visible in the UI ever, yet prevent me from creating volumes with the same name via 'Add volume'.

@sshipway I don't have a NFS setup, but I tried with convoy-gluster and I am able to reproduce the fact that volumes don't show up until I refresh for both when you add the volume from the storage pool page and when creating a container with the convoy-gluster driver.
These are actually duplicates of https://github.com/rancher/rancher/issues/2763
But to just confirm, even after a refresh, were the volumes visible in the UI? I'd like to close this issue in favor of 2763
As for the large number of defined volumes, we should open a separate issue to track that as it's a different issue.

After a refresh, the volumes created from the UI were visible.  However the volumes that were created implicitly by mounting a not-yet-existing volume from a new container do not appear (though they work).

@vincent99 Looks like you are not including storagePools in the subscribe. When I added that to the subscribe URL in my little ws client, I got an event when I added the volume.

In v1.1.0, I am unable to reproduce this issue. When a volume was created using convoy-gluster, I was able to see the volume in the storage pool page without the need of a refresh.

Hi,
I'm in v1.1.2 with Docker v1.10.3 using convoy-nfs still getting this UI problem.
After creating new volume, nothing happen. After refreshing the page, the volume appear but as "requested".

^ I have the same issue as arkka. I create volumes through the UI after reading the blog post today (08/18) and when i create volumes, they show up as requested.
Any help would be great!

The volumes are in requested state, but not in an active state until it's actually used by a service.

Thank you! That would be really useful information to append to the blog post. All is working as intended now.
On a related note, is it possible to scale the docker-nfs server to increase its resilience? Ie: have multiple containers running it so if one goes down all the data isn't lost?

@deniseschannon thank you!
In my case, i didn't type correctly my storage pool name therefore the storage is not change to active from requested.. and i thought something wrong with the storage side (my bad).
Is it possible on the storage driver input UI using a dropdown that populate from existing storage pool instead of free input text? to avoid this kind silly mistake.

@arkka the reason it is a text box is because users might have other docker volume plugins installed that rancher doesnt know about, so they need a free form field. That said, maybe it can be a dropdown plus an "Other" option that then gives a textbox.
Paging @vincent99 for UI expertise.


Make LoadContext use the builder pattern for loading dependent assets

Objective

Fixes #13445.

Solution

Removes all load_ methods from LoadContext.
Introduces fn loader() which returns a builder.

Testing

I've tested with cargo test --package=bevy_asset and run the two relevant examples (asset_processing & asset_decompression).

Changelog

Replaced all load_ methods on LoadContext with the new loader() pattern.

Migration Guide

Method calls to LoadContext::load_* will need to be replaced with the equivalent method on .loader().

CC @alice-i-cecile / @bushrat011899
Examples:
load_context.loader()
    .with_asset_type::<A>()
    .with_asset_type_id(TypeId::of::<A>())
    .with_settings(|mut settings| { settings.key = value; })
    // Then, for a Handle<A>:
    .load::<A>()
    // Or, for a Handle<LoadedUntypedAsset>:
    .untyped()
    .load()
    // Or, to load an `A` directly:
    .direct()
    .load::<A>()
    .await
    // Or, to load an `ErasedLoadedAsset` directly:
    .direct()
    .untyped()
    .load()
    .await

Okay so first impressions at a skim:

I generally like the effect of this API! The builder pattern is a great way to express this sort of explosion of options.
I'd like to get rid of the noisy / unhelpful .loader() method calls.
I don't like the proliferation of subtly distinct builder types.

Can we make these all methods directly on LoadContext by adding more optional fields?

Okay so first impressions at a skim:
1. I generally like the effect of this API! The builder pattern is a great way to express this sort of explosion of options.

Agreed! I'm personally experimenting with a typestate variant of this builder to see if that might be a worthy alternative. The typestate pattern is harder to write initially, but allows better contextual method suggestions in an IDE.

2. I'd like to get rid of the noisy / unhelpful `.loader()` method calls.

...
Can we make these all methods directly on LoadContext by adding more optional fields?

I don't think this is possible since the &'a mut Reader<'b> has lifetimes distinct and typically shorter than the &'a mut LoadContext<'c>. Storing the reader in the LoadContext would require rebuilding the LoadContext with updated lifetimes when the reader is added/consumed, but we only provide a mutable reference to the LoadContext (e.g., AssetLoader::load).
Because of this, I think at minimum a second type, LoaderBuilder, is required to represent "LoadContext which maybe has a reader".

3. I don't like the proliferation of subtly distinct builder types.

Agreed. As mentioned, I'm experimenting with a typestate alternative which allows only a single type to be used:
pub struct LoaderBuilder<CX, TF, A, R, D> {
    load_context: CX,
    meta_transform: TF,
    asset_type: A,
    reader: R,
    direct: D,
}

Overall I really like this PR. Once I've finished experimenting I'll do a full review!


inputmask('integer') does not works on Android, any input discarded

Hi Robin,
i've an issue when i use inputmask('integer'): on desktop is fine, but testing on Android, the text input does not accepts any chars, both alpha and numerics.
Any clue?
Thanks

Hi @michelevirgilio ,
Which version of the inputmask are you using?

3.3.9
Thanks

For testing
https://jsfiddle.net/vvy1fdz0/

@michelevirgilio ,
Have a try with the jsfiddle (4.x) or try version 3.3.10

@RobinHerbots I've tested 3.3.10 on a moto e with android 4.4.4 and chrome 62.0.3202.73 and the problem mentioned in this thread is still present when the predictive keyboard is enabled.
If androidHack is used, I see the password field on android phones.  I try to use colorMask + css but the additional field is still present.
The good news is that the 4.x fiddle seems to be working as expected for now, but since it's not released, I would like to ask what is the status for releasing 4.x to the wild.
Thanks for this library!

@bcardiff ,
Have a try with https://jsfiddle.net/a4wukgsd/4/
It seems that the css in the 3.3.10 version is incomplete.
Btw you also need to include the css when using the androidhack

I released 3.3.11 with updated css.
4.x release will be when regex support and the datetime alias is on par with the 3.x branch

Thanks @RobinHerbots for the release.
I would like to ask two things that might lead to other new issues.

If the original inputs are styled, when androidHack is used, I am expected to tweak the css in this repo to mimic the original look and feel, right? If so, that should be done solely in css since I couldn't find any callback to add css classes to the additional div helper.

I noticed, that if many input masks are present in the same page, when the user clicks on them (without pressing any key), multiple blink cursors will end up been displayed. http://g.recordit.co/pNRUhoJrlf.gif

At the end of the day I am trying to use input mast with a bootstrap 3.3.7 site:
https://jsfiddle.net/bcardiff/a4wukgsd/5/ that's why I noticed (1). And might found some stopper issues regarding bootstraps input addons and inputmask working together.

@bcardiff ,
The issues you see in the layout in the bootstrap styled inputs are due to the colorMask (~ androidHack) used.  I opened a new issue to follow-up on these.
issue 1: yes, maybe allowing to pass a ccssclass or inheriting the cssclass from the input could help
issue 2: I will fix that
Suggestions, feedback, ideas, solutions are welcome.


Executing a kubectl command from inbuilt terminal triggers Bitdefender Antivirus

Lens 3.6.3 on windows, which was running quite happily until I dared run a kubectl command from the inbuilt terminal at which point Bitdefender decided kubectl.exe was malware along with helm3.exe, Lens.js, messages.js and even lens.lnk.
I'm pretty sure this is a bitdefender issue and will raise it with them.

Got confirmation based on the sample and logs I'd sent in that lens is not malware and the next bitdefender update should fix this detection.

Got confirmation based on the sample and logs I'd sent in that lens is not malware and the next bitdefender update should fix this detection.

👍 Thanks for reporting this to bitdefender!

it is happening again, after install lens and try to open it it just deletes it


receiver-only: need s3 write permissions ?

Hi,
I'm trying to build a 1master - multiple read only slaves  setup,
for security reasons, I would like to set the s3 access to readonly on the slaves nodes,but it don't seem to work,
I got a "access denied".
Setting write permissions is working, as they are creating shards on the s3
Is is expected for receiver only nodes ?

I can confirm that when running in receive mode, only read permissions are needed.


Source IP of traffic from AG to VM

If an AG with a PIP is configured with a backend pool containing VM(s), when the VMs receive the inbound traffic, do they see the original (Internet) IP as the source or the AG's IP? If it's the original IP, what's the best way to configure UDR such that requests that have come in via the AG are replied to through the AG (thus avoiding asymmetric routing) whilst having other (e.g. outbound) Internet connections routed through a different firewall NVA?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0373061e-623f-f6ca-7d42-e32ea0299c66
Version Independent ID: 20930963-7740-a05e-8743-2210404675da
Content: How an application gateway works
Content Source: articles/application-gateway/how-application-gateway-works.md
Service: application-gateway
GitHub Login: @abshamsft
Microsoft Alias: absha

@ChrisSommers the source will be the AGs IP, and will come from the AG's subnet. How App Gateway and NSGs interact are explained Here.  the best way to configure a UDR is to set a next hop type of Internet will go to a firewall or other device.
Unless you have UDRs that effect traffic going to and from the App Gateway subnet, there should be no issues. Please let me know if you have any further questions.

Thanks Travis. So with the UDR as it is (with a route for <IP_ADDRESS>/0 going to an Azure Firewall), the VMs in the backend pool will send their http/s replies back through the firewall rather than back to the AG.
If the source IP of the traffic from the AG to the VMs is the AG's IP, I presume I can have a "vnetlocal" route on the VMs' subnet for the AG's IP, so the reply traffic doesn't get sent to the firewall?

@ChrisSommers that is my understanding. I would suggest that you test this scenario, as sometimes strange interactions can happen.
Please let me know if you have any other questions.

@ChrisSommers, that's the right understanding. Also, the source IP the backend server sees depends on the backend pool configuration. If the backend pool is a private IP or a domain that resolves to a private IP, the source will be Application Gateway's instance IP addresses (Private). If the backend pool is a public endpoint, then the outbound traffic will be SNATed through the Application Gateway's public IP and that'll be the source.
If you are using UDR to redirect the traffic using <IP_ADDRESS>/0, make sure that you override Application Gateway's source IP (depending on the backend pool) so that the return traffic flows through Application Gateway.

Thanks suramjb. I'm happy for this issue to be closed now.

@ChrisSommers We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Build types error different versions of NHost

By making this change I have no issues with types using documentation here:
https://docs.nhost.io/reference/react/apollo
Otherwise following that same example and running yarn build to check types will throw an error.
Type error: Type 'import("/node_modules/@nhost/react/dist/client").NhostClient' is not assignable to type 'import("/node_modules/@nhost/nhost-js/dist/core/nhost-client").NhostClient'.
  Types of property 'auth' are incompatible.
    Type 'HasuraAuthClient' is missing the following properties from type 'HasuraAuthClient': api, onTokenChangedFunctions, onAuthChangedFunctions, refreshInterval, and 19 more.

  34 |     <NhostProvider nhost={nhost}>
  35 |       <NhostApolloProvider
> 36 |         nhost={nhost}
     |         ^

Nevermind, it seems I had to just delete node_modules and try again. Now working, but not sure what fixed it

It's highly likely that there was a version mismatch between the two packages.


Use source instead of hostname and client id in metrics

Use source instead of hostname and client id to identify metrics source

@calvinjia PTAL, I only modify a small set of files. Most of the files are auto-generated proto code, no sure why that many. I may directly run -Pgenerate on the master and create a PR to minmize those auto-generated coded.

Need to merge https://github.com/Alluxio/alluxio/pull/10893 before this PR

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8136/
Test PASSed.

@LuQQiu could you address the merge conflicts? #10893 has been merged

@calvinjia Addressed the merge conflicts, PTAL, thanks

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8152/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8161/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8166/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8169/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8171/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8173/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8176/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8178/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8181/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8184/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8185/
Test FAILed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8186/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8194/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8195/
Test PASSed.

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8196/
Test FAILed.

Failed tests:
alluxio.server.ft.journal.TableMasterJournalIntegrationTest.journalTransformDb(alluxio.server.ft.journal.TableMasterJournalIntegrationTest)
Run 1: TableMasterJournalIntegrationTest.journalTransformDb:198 expected: but was:
Run 2: TableMasterJournalIntegrationTest.journalTransformDb:198 expected: but was:

Jenkins, test this please

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8197/
Test FAILed.

Tests in error:
alluxio.server.ft.ZookeeperFailureIntegrationTest.zkConnectionPolicy_Session(alluxio.server.ft.ZookeeperFailureIntegrationTest)
Run 1: ZookeeperFailureIntegrationTest.zkConnectionPolicy_Session:139 » Timeout Timed...
Run 2: ZookeeperFailureIntegrationTest.zkConnectionPolicy_Session:139 » Timeout Timed...

Jenkins, test this please

Merged build finished. Test FAILed.

Test FAILed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8204/
Test FAILed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8202/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8206/
Test PASSed.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/Alluxio-Pull-Request-Builder/8208/
Test PASSed.

alluxio-bot, merge this please


Change in root_override not working

Related to this issue #283, when I change root_override parameter, for example :
'local' => 'boards/%storage_path%/app/',
'public' => 'boards/%storage_path%/app/public/'

It still try to look into board-123456/app/public and not boards/board-123456/app/public.
I run php artisan cache:clear and php artisan config:clear but it's still not working.
Do I miss anything here ?

Show me your full tenancy config file please.

<?php

declare(strict_types=1);

return [
    'storage_driver' => 'db',
    'storage_drivers' => [
        'db' => [
            'driver' => Stancl\Tenancy\StorageDrivers\Database\DatabaseStorageDriver::class,
            'data_column' => 'data',
            'custom_columns' => [
                // 'plan',
            ],
            'connection' => null, // Your central database connection. Set to null to use the default connection.
            'table_names' => [
                'tenants' => 'tenants',
                'domains' => 'domains',
            ],
        ],
        'redis' => [
            'driver' => Stancl\Tenancy\StorageDrivers\RedisStorageDriver::class,
            'connection' => 'tenancy',
        ],
    ],
    'tenant_route_namespace' => 'App\Http\Controllers',
    'exempt_domains' => [ // e.g. domains which host landing pages, sign up pages, etc
        parse_url(config('app.url'))['host'],
    ],
    'database' => [
        'based_on' => null, // The connection that will be used as a base for the dynamically created tenant connection. Set to null to use the default connection.
        'prefix' => 'board-',
        'suffix' => '',
    ],
    'redis' => [
        'prefix_base' => 'board-',
        'prefixed_connections' => [
            // 'default',
        ],
    ],
    'cache' => [
        'tag_base' => 'tenant',
    ],
    'filesystem' => [ // https://tenancy.samuelstancl.me/docs/v2/filesystem-tenancy/
        'suffix_base' => 'board-',
        'suffix_storage_path' => true, // Note: Disabling this will likely break local disk tenancy. Only disable this if you're using an external file storage service like S3.
        // Disks which should be suffixed with the suffix_base + tenant id.
        'disks' => [
            'local',
            'public',
            // 's3',
        ],
        'root_override' => [
            // Disks whose roots should be overriden after storage_path() is suffixed.
            'local' => 'boards/%storage_path%/app/',
            'public' => 'boards/%storage_path%/app/public/',
        ],
    ],
    'database_managers' => [
        // Tenant database managers handle the creation & deletion of tenant databases.
        'sqlite' => Stancl\Tenancy\TenantDatabaseManagers\SQLiteDatabaseManager::class,
        'mysql' => Stancl\Tenancy\TenantDatabaseManagers\MySQLDatabaseManager::class,
        'pgsql' => Stancl\Tenancy\TenantDatabaseManagers\PostgreSQLDatabaseManager::class,
    ],
    'database_manager_connections' => [
        // Connections used by TenantDatabaseManagers. This tells, for example, the
        // MySQLDatabaseManager to use the mysql connection to create databases.
        'sqlite' => 'sqlite',
        'mysql' => 'mysql',
        'pgsql' => 'pgsql',
    ],
    'bootstrappers' => [
        // Tenancy bootstrappers are executed when tenancy is initialized.
        // Their responsibility is making Laravel features tenant-aware.
        'database' => Stancl\Tenancy\TenancyBootstrappers\DatabaseTenancyBootstrapper::class,
        'cache' => Stancl\Tenancy\TenancyBootstrappers\CacheTenancyBootstrapper::class,
        'filesystem' => Stancl\Tenancy\TenancyBootstrappers\FilesystemTenancyBootstrapper::class,
        'queue' => Stancl\Tenancy\TenancyBootstrappers\QueueTenancyBootstrapper::class,
        // 'redis' => Stancl\Tenancy\TenancyBootstrappers\RedisTenancyBootstrapper::class, // Note: phpredis is needed
    ],
    'features' => [
        // Features are classes that provide additional functionality
        // not needed for tenancy to be bootstrapped. They are run
        // regardless of whether tenancy has been initialized.

        // Stancl\Tenancy\Features\Timestamps::class,
        Stancl\Tenancy\Features\TenantConfig::class,
        // Stancl\Tenancy\Features\TelescopeTags::class,
        // Stancl\Tenancy\Features\TenantRedirect::class,
    ],
    'storage_to_config_map' => [ // Used by the TenantConfig feature
        'lang' => 'app.locale',
        'name' => 'app.name'
    ],
    'home_url' => '/dashboard',
    'queue_database_creation' => false,
    'migrate_after_creation' => true, // run migrations after creating a tenant
    'migration_parameters' => [
        // '--force' => true, // force database migrations
    ],
    'seed_after_migration' => true, // should the seeder run after automatic migration
    'seeder_parameters' => [
        '--class' => 'Seeds\Tenant\DatabaseSeeder', // root seeder class to run after automatic migrations, e.g.: 'DatabaseSeeder'
        // '--force' => true, // force database seeder
    ],
    'queue_database_deletion' => false,
    'delete_database_after_tenant_deletion' => true, // delete the tenant's database after deleting the tenant
    'unique_id_generator' => Stancl\Tenancy\UniqueIDGenerators\UUIDGenerator::class,
    'global_middleware' => [
        App\Http\Middleware\InitializeTenancy::class,
    ],
];

That's strange, this code should make the change: https://github.com/stancl/tenancy/blob/2.x/src/TenancyBootstrappers/FilesystemTenancyBootstrapper.php#L62-L64

I updated the tenancy/src/TenancyBootstrappers/FilesystemTenancyBootstrapper.php file with the one your refer but I still have the issue

I didn't say you should update anything, your version looks the same as the one I sent. I'm just saying that those 3 lines are responsible for making the change.

This file was not the same on my side, I had :
if ($root = str_replace('%storage_path%', storage_path(), $this->app['config']["tenancy.filesystem.root_override.{$disk}"])) {
                Storage::disk($disk)->getAdapter()->setPathPrefix($root);
            } else {

So I thought that you had a suspicious on it. Sorry for the misunderstanding 😉

Ah. And are you using the latest version? composer update stancl/tenancy

Yes :  Nothing to install or update

I don't seem to be able to reproduce this.


Bug: The "empty" field seems to be ignored.

The original behavior behind/intention for the "empty: true" field in the individual markdown files` headers was to gray out the listing on the knowledge base. This is meant to visualize missing information/uninformative pages.
This is no longer the case.
I assume that the changes for https://github.com/NFDI4Microbiota/nfdi4microbiota-knowledge-base/issues/64 caused this.
There is also a field "hide" for which "hide: true" does not seem to do anything.

I just wanted to clarify few things

Should we list the file in the menu, have no content inside? I think they are purposely placed there allowing the users to be contributing.
I have removed the files from the menu where we have hide = true (should I keep it like that?) the menu looks like this now:

@Xiart I think that might be the idea for hide, yes.
Those that are empty but should be shown should have empty: true hide: false (which is the default).
Those that have empty: true, hide: false, schould be displayed such that users can contribute. Their menu entry should be displayed in a light-gray text color though.
At least this was the previous behavior.

I have got it. Pushing the changes.
Thank you.

@Xiart This issue has been closed, but the problem still persists (or appeared again).


Fix VirtualMachineInstance generation

This commit fixes the generation of the virtualMachineInstance (registry credentials secret, cloud-init file)

/merge


BloomFilter.cpp file is missing

Bloom Filter.cpp file is missing from      src/main/cpp/third-party/bloom_cpp/src/BloomFilter.cpp

@Deepshikha01,
The bloom filter is maintained in a separate repo and is pulled in as a submodule.  Cloning with the --recursive flag should fix this.
If you already have the repo checked out, you can also execute the following within the git repo without having to clone it again:
$ git submodule init
$ git submodule update

This is also explained in the repo's README in the "Building the Project" section.

thanks @JeffAment for the explanation.
@Deepshikha01 is your problem solved following the described steps? Thanks.

Hello Sir/Madam,
Greetings of the day!
Thanks for the explanation ...My problem is solved .
Thanks and regards
Deepshikha shaw
On Mon, 27 Apr 2020 at 12:18, Cristian Monforte<EMAIL_ADDRESS>wrote:

thanks @JeffAment https://github.com/JeffAment for the explanation.
@Deepshikha01 https://github.com/Deepshikha01 is your problem solved
following the described steps? Thanks.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/duckduckgo/Android/issues/795#issuecomment-619766408,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ANJIP3SYXMAAA47CWNYEOV3ROUTCNANCNFSM4MQKKVPQ
.


feature: made the client object available when calling extraAccessTokenFields

Description
This pull request resolves multiple issues related to setting optional claims for the access token. The fix involves passing the client object as an argument to the extraAccessTokenFields method.
It will give more data about the client to set some optional fields like aud to the client id .
Explanation of the Changes

Modified every call of the extraAccessTokenFields method to include the client parameter.
Added a call to the extraAccessTokenFields method in the client credential grant class.
Made the "sub" claim configurable, similar to the "aud" and "iss" claims. By default, it uses the user ID if available. This change allows for handling cases where the "sub" claim needs to be set based on the presence or absence of a user.

It seems like this can be done without adding an additional required class, which would be a major version breaking change.
export interface OAuthUserRepository {
  extraAccessTokenFields?(user: OAuthUser, client: OAuthClient): Promise<ExtraAccessTokenFields | undefined>;
}

with
const extraJwtFields = user ? await this.userRepository.extraAccessTokenFields?.(user, client) : undefined;

Will do it but
I think providing client to this method will make that method in the current user repository  really odd !!

I get what you mean, but I dont think that extending the library and requiring another optional parameter on the constructor is the right way to do it. TBH, I already think the requirement for all repositories to be implemented was a poor decision, so I just feel like this is expanding that (even though I realize that this is an optional parameter), I feel like it is expanding the library in the wrong place.
I would have no issues with extending the current extraAccessTokenFields and adding a second parameter of the client, to allow implementers to accomplish the same end result. Do you see any issues with this solution?

@jasonraimondi
I have made an update to the pull request based on the discussion, including additional description details, and all tests are passing successfully.

Thank you for your work and contribution. I am sorry, but I am not going to be merging this PR, just because I do not want to expand the AuthorizationServer constructor. I have moved the extraAccessTokenFields off of the UserRepositoryInterface, and onto the JwtInterface.
I am working on a 3.0 release that is going to include support for this feature. You can see the work detailed here: https://github.com/jasonraimondi/ts-oauth2-server/commit/796c66b359ed732d6e98c2276534a74ab6b811aa
I will start publishing some alpha 3.x releases soon!

@jasonraimondi Okay but can you at least at this to client credentials grant too

@jasonraimondi
just asking a question why you did not add the extraTokenFileds to client credentials too

@jasonraimondi just asking a question why you did not add the extraTokenFileds to the client credentials grant too !!

I am working on a version 3.0 release that will support the requested feature. Feel free to use >= 3.0.0-alpha.9. I do not want to add this to 2.x.

<EMAIL_ADDRESS>https://jasonraimondi.github.io/ts-oauth2-server/utils/#example-extra-params-usage
https://github.com/jasonraimondi/ts-oauth2-server/blob/main/test/e2e/grants/auth_code.grant.spec.ts#L30-L36

In the current implementation in version 3 alpha
The client credentials grant does not call extraTokenFields it's being called in all grants except this grant
I think it's not being called because this grant originally didn't have a user and that is logically true in the previous implementation because it didn't have a user so no need to call that method but now the current implementation has a client so it's logically now to call this method now inside the mentioned grant

I’ll get that added and throw up a new version shortly.


Location plan for books

Is your feature request related to a problem? Please describe.
Users are a bit lost in the library when trying to find books location based on shelf number:
e.g. Where is 539.12?
Describe the solution you'd like
Have a information point next to Shelf number that opens when you click on it: a plan will display the shelf where this shelf number is:

Additional context
SCE & SIS can provide the image and matrix.
TASKS:

[x] export all books with physical item by subject in a csv/excel file
[ ] discuss the UDP code placement

To avoid the confusion between what we call "shelf" for now (for example 005.8 REB in Salomé's example above) and the shelf number (for example shelf number 1, 2, 3, etc.), we would like to change the name from "Shelf" to "Call number".

Script for updating the shelf locations of all physical items from the provided file: https://gitlab.cern.ch/cds-team/production_scripts/-/merge_requests/20

I am about to order stickers to add the shelf number on top of each shelf as per the number we gave them in the file, so users can refer to that. @kpsherva could you please let us know how it will be displayed in the catalogue? I see on Sandbox only the Shelf (which will become the Call number) at the moment.

The map is not loading:

The question mark next to Shelf (which should become Call number) shows: Call number: -
Should it be displaying the Shelf number (how we number the shelves on the map)?

Sorry, I should have explained the details about maps.
Since the mapping of shelves you've provided is only mapping the production environment, I didn't run the shelf updating script, meaning in order to test the map we need to set the correct shelf number in the edit form. I've updated the document which you were testing, please re-check: https://sandbox-cds-ils.web.cern.ch/backoffice/items/bf1v8-41609

The example is working, thank you for the explanation!
Something very very important: I see that you completely removed the call number (for example 524.8 GRE) in front office and back office, which is problematic for us as already discussed during the meeting a few weeks ago.
This call number is essential for us to locate books. Us, as librarians, will not use the map and the call number is the only way to find exactly the book (i. e. shelf number alone is not enough to find the book directly, otherwise we would have to browse the whole shelf to find it, which is not practical at all).
In addition, all books that are in the depots will not have a map nor a shelf number, so we will not be able to locate easily the books without the call number. Could you please change and put the call number again? with the modification I asked above:

To resume, we need the call number to be visible in front and backoffice as it is currently the case, and the shelf number should be visible when we hover over the information button in front office.
I maintain my additional comments from above:

I don't remember talking about two different ways to have access to the localisation? might be a bit confusing for users?
"Shelf" should be changed to "Call number" (see above)
The question mark just says "Call number: -" I assume it is for the shelf number, so it should be changed for "Shelf number: 1". In addition I would replace the question mark by an "i" for information.
For items that are not located in 'CERN Central Library', could you please add an info icon with the text 'Please request online or ask at the Library desk' next to the call number?
In addition the embedded map is not needed in back office for documents that are in depots : UPDATE -> to avoid to complicate things, you can remove in back office the map as librarians don't need it to find books.

@lydipi the call number will be still accessible, it will be stored in

I didn't run the script updating all the physical items for the same reason why the shelfs are not updated in the sandbox - because I do not have the mapping for sandbox, we created only the one for production.
Therefore, as it was highlighted before in the meeting, no data will be lost, including the call number. We will leave it displayed aside the shelf.

"Shelf" should be changed to "Call number" (see above)
The question mark just says "Call number: -" I assume it is for the shelf number, so it should be changed for "Shelf number: 1". In addition I would replace the question mark by an "i" for information.

Apologies for the confusion this caused (see the explanation above). I have updated the https://sandbox-cds-ils.web.cern.ch/literature/e0axn-tqh96 example document accordingly, therefore the labels indicated in the screenshot should now match with the respective data.
In order to make it less confusing for the end user (and quickly findable) we will display the shelf and call number in the "Shelf" column in a following manner:
01 (524.8 GRE)
instead of adding the question mark icon.
I would like to avoid adding additional column for call number to the table because it would visually overload the table (already tested), therefore I think it would be a good compromise to use the parenthesis.
Regarding:
1.

For items that are not located in 'CERN Central Library', could you please add an info icon with the text 'Please request online or ask at the Library desk' next to the call number?

Do you mean Central Library as in the internal location or CERN Central Library as main location?

In addition the embedded map is not needed in back office for documents that are in depots : UPDATE -> to avoid to complicate things, you can remove in back office the map as librarians don't need it to find books.

We will remove the map from the backoffice

I don't remember talking about two different ways to have access to the localisation? might be a bit confusing for users?

could you explain me what do you mean by two different ways ?

To discuss this afternoon, but here are already my comments:

Central Library as in the internal location (we only mapped that ones). All the items in internal locations Depot 1, 2 and 3, etc. should display 'Please request online or ask at the Library desk' as there is nothing to show on the map and these locations are not accessible to the public.
Thanks! Could we also swap, in the backoffice, the Call number (to have it at the top - like it was before) with the Shelf number (it can be where is now displayed the Call number). Librarians will always check with the Call number and do not need the Shelf number as much as users to locate the books.
In front office, there is the link to the map on the Shelf number, and the Map on the right under 'Request'.

In front office, if the Call number is displayed in parenthesis after the Shelf number as you said, e.g. 01 (524.8 DAR), fine! At the moment, the Call number only appear in the hover box when the mouse is on the Shelf number. So, that will be changed?

See comment on other issue related to CERNMap

Could you please send us a screenshot of how it will look like for books without shelf numbers (e.g. the ones in the Depot)?


separate ddc binary into two

atm we build the ddc binary for local-collect into itself this is a giant waste of space and it makes it more challenging to support nodes running on arm64 architectures so this task is pretty simple

[ ] find all the files that are only used in local-collect..and add a build tag for local
[ ] find all the files that are only used in the remote collection process and tag them as local
[ ] change the local command cli so that it only contains the local-collect command and flags
[ ] change the remote command cli so that when calling local-collect it actually just uses this strategy https://github.com/rsvihladremio/dremio-diagnostic-collector/blob/12e5c99d0de2f4dee388ed227a4c45fb68c4d840/cmd/root/fallback/fallback.go#L28 which will help in generating better diagnostic tarballs. for analysis
[ ]  update all the build scripts so that the remote ddc binary is build with the -tags remote and the local one with the -tags local
[ ] because this is a fundamental change go ahead and bump the ddc version to v4 which involves updating the module references unfortunately https://go.dev/doc/modules/major-version basically:
[ ]  update the go.mod to in the module line v4
[ ] change all the imports to use v4 instead of v3 (search replace may be your friend here)

good article here on all this https://www.digitalocean.com/community/tutorials/customizing-go-binaries-with-build-tags

wrong repo :)


Error message when geoJson layers are not at the top of layers list

Hello,
I'd like to thank IAG for providing boot-leaf open source and Stephan Lead for the work he’s done putting the framework and documentation together. I'm a novice web developer experimenting with your source code though django web framework.
I've found what seems to be an issue in the way boot-leaf manages layers. If I move the example geojson layers to a different position in the layers list I get the following error when the map loads. This error seems to appear if any of the geojson are not at the top of the list. The functionality of the Map appears to be unaffected (all layers load, just the error message appears).

Aside from from the config file, below is list of modifications I've made to the bootleaf source:
Installation
Package was split into the following to match Django filing structure:

Project specific static files moved to Project-->static
Project specific index file was moved into temlates-->Project
The remaining folder structure was moved to static

The index file supplied with the original package was modified to include django
tagging of its static links and were routed to the correct directory based on the
package split discussed above.
Customizations

added resize #sidebar in bootleaf-->style.css
changed .panel-heading, .panel-body & .feature-row width to 100%
in bootleaf-->style.css

Fixes

changed typo in config file for esri basemap layer topographic

I can reproduce the error when the JSON layers aren't found at the top of the list - I'll look into it as soon as possible.
For now, the workaround is - put them at the top of the list ;)
It's cool to see that you're using this in Django, I'd love to see the finished app when you're done

This should now be fixed in the latest version. The change is around line 357 of app.js:
// Add the layer to the map if it's not hidden. geoJSON layers are added after their Ajax call has completed
        if (!layerConfig.hidden && layerConfig.type !== 'geoJSON') {
          addLayer(layer);
        }

Let me know if you see any further issues.

Hey! wow fast turn around. Yes I'll post any issues I find and I'll share what I end up with in the end.
Thanks!


backend/drm: use modifiers for our GBM buffers

On my Intel GPU, the primary plane ends up using X_TILED instead of LINEAR.
Closes: https://github.com/swaywm/wlroots/issues/1840

Thanks


fix: AZD ML Project - Adjusted KeyVault access policies deployment

Description

Fixed AZD ML Project access policies deployment to use native Bicep code.
Using the AVM module in this case is not a good idea as it sets several default values (such as purge protection)

Pipeline Reference

Pipeline

Type of Change

[ ] Update to CI Environment or utilities (Non-module affecting changes)
[ ] Azure Verified Module updates:

[x] Bugfix containing backwards-compatible bug fixes, and I have NOT bumped the MAJOR or MINOR version in version.json:

[ ] Someone has opened a bug report issue, and I have included "Closes #{bug_report_issue_number}" in the PR description.
[ ] The bug was found by the module author, and no one has opened an issue to report it yet.

[ ] Feature update backwards compatible feature updates, and I have bumped the MINOR version in version.json.
[ ] Breaking changes and I have bumped the MAJOR version in version.json.
[ ] Update to documentation

@AlexanderSehr although the avm module sets secure values by default, it should always be possible to overwrite those values by explicitly passing them as input. Out of curiosity, why not doing that instead of using the native resource?

Great question. I'd advice against it because the unexpected overwrite of the purgeProtection that is the original reason I've created this PR may only be one of the properties that's overwritten. There are a lot more defaults in the Key Vault module that I'd need to guess even though the creator actually only wanted to deploy the accessPolicies child module. I hope that makes sense :)

d this PR may only be one of the properties that's overwritten. There are a lot more defaults in the Key Vault module that I'd need to guess even though the creator actually only wanted to deploy the accessPolicies child module. I hope that makes sense :)

Fair for me. I guess this can be updated if we get to the child module publishing, right?

d this PR may only be one of the properties that's overwritten. There are a lot more defaults in the Key Vault module that I'd need to guess even though the creator actually only wanted to deploy the accessPolicies child module. I hope that makes sense :)

Fair for me. I guess this can be updated if we get to the child module publishing, right?

Definitely 💪


Assertion failure in resolver: assertion failed: !r->have_next_resolution_timer_

I'm often seeing this when all the loadbalanced backends go down. This seems to be happening both for grpclb (when all the loadbalancers go down) and for round_robin loadbalancing (when all the backends become unavailable).
The assertion failures are:
E0416 15:46:16.490687<PHONE_NUMBER>03200 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:337: assertion failed: !r->have_next_resolution_timer_
and
src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc:212: assertion failed: !r->have_next_resolution_timer_
c-ares case:
D0416 15:46:16.490146<PHONE_NUMBER>03200 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:332: dns resolution failed: {"created":"@1523893576.489965351","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":201,"referenced_errors":[{"created":"@1523893576.489959893","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":201,"referenced_errors":[{"created":"@1523893576.488115974","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":305,"referenced_errors":[{"created":"@1523893576.467928225","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":246}]}]}]}
I0416 15:46:16.490189<PHONE_NUMBER>03200 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:335: dns resolution failed (will retry): {"created":"@1523893576.489965351","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":201,"referenced_errors":[{"created":"@1523893576.489959893","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":201,"referenced_errors":[{"created":"@1523893576.488115974","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":305,"referenced_errors":[{"created":"@1523893576.467928225","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":246}]}]}]}
E0416 15:46:16.490687<PHONE_NUMBER>03200 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:337: assertion failed: !r->have_next_resolution_timer_

default DNS resolver case:
D0419 15:19:52.425631<PHONE_NUMBER>27392 src/core/ext/filters/client_channel/client_channel.cc:1396: chand=0xe4bd20 calld=0xe5e190: entering client_channel combiner
D0419 15:19:52.425690<PHONE_NUMBER>27392 src/core/ext/filters/client_channel/client_channel.cc:1097: chand=0xe4bd20 calld=0xe5e190: starting pick on lb_policy=0x7f54940090a0
D0419 15:19:52.425708<PHONE_NUMBER>27392 src/core/ext/filters/client_channel/client_channel.cc:965: chand=0xe4bd20 calld=0xe5e190: applying service config to call
I0419 15:19:56.435703<PHONE_NUMBER>62528 src/core/ext/filters/client_channel/subchannel.cc:643: Connect failed: {"created":"@1524151196.435546206","description":"Failed to connect to remote host: OS Error","errno":113,"file":"src/core/lib/iomgr/tcp_client_posix.cc","file_line":203,"os_error":"No route to host","syscall":"getsockopt(SO_ERROR)","target_address":"ipv4:<IP_ADDRESS>:8000"}
I0419 15:19:56.435783<PHONE_NUMBER>62528 src/core/ext/filters/client_channel/subchannel.cc:465: Subchannel 0x7f549400baf0: Retry immediately
I0419 15:19:56.435801<PHONE_NUMBER>62528 src/core/ext/filters/client_channel/subchannel.cc:422: Failed to connect to channel, retrying
D0419 15:19:56.436000<PHONE_NUMBER>62528 src/core/ext/filters/client_channel/client_channel.cc:378: chand=0xe4bd20: started name re-resolving
I0419 15:19:56.442994<PHONE_NUMBER>40640 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc:210: dns resolution failed (will retry): {"created":"@1524151196.442925221","description":"OS Error","errno":-2,"file":"src/core/lib/iomgr/resolve_address_posix.cc","file_line":106,"os_error":"Name or service not known","syscall":"getaddrinfo","target_address":"greeter-server.default.svc.cluster.local:8000"}
E0419 15:19:56.443506<PHONE_NUMBER>40640 src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc:212: assertion failed: !r->have_next_resolution_timer_

@AspirinSJL   any ideas?

https://github.com/grpc/grpc/blob/959e04ffb8fceb7f3554131fbbf4e9a406615a01/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc#L212

Sounds like a bug caused by re-resolution. Looking.

So this might be a bug in our implementation of DNS cooldown.
As I understand it, our resolution steps (timer starts, timer fires, start resolution, resolved, next resolution...) are sequential. But this bug shows that the timer may be on when we finishes a resolution.
I checked the code about how the steps are managed. I don't see any apparent bug.
@jtattermusch How should I reproduce this bug?

My best guess without running any reproduction is that this is a timer race.
The closure of on_next_resolution_  is scheduled but not yet run, so have_next_resolution_timer_ is still true. In the mean time, a re-resolution is requested and done, because it's passed the cooldown period. But the re-resolution fails quickly and triggers this assertion, before the on_next_resolution_ closure is run.
This timing should be rare.. but possible.

I haven't really measured, but I estimate that in my setup I'm seeing this ~20% of time when all the backends go down - so quite often.

I was able to reproduce outside kubernetes environment.  Besides everything I stated above, lb_policy needs to be set to round_robin (I wasn't able to reproduce with pick_first).

A detailed log  (some extra debug messages added;  first few times the ares resolution fails and re-resolution is scheduled, but eventually  OnResolvedLocked() is called when r->have_next_resolution_timer_ is still true   (before OnNextResolutionLocked() would set it to false.
As mentioned before, the same issue has been observed for both  ares resolver and the default DNS resolver, which makes me suspect that the bug is elsewhere in client_channel code (the problems seems specific to round_robin  LB policy).
D0420 17:15:05.698892<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:291: AresDnsResolver::OnResolvedLocked() is called.
D0420 17:15:05.699042<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:339: dns resolution failed: {"created":"@1524237305.698594518","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":362,"referenced_errors":[{"created":"@1524237305.698535702","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237305.697032250","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237305.690343974","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":303}]}]}]}
I0420 17:15:05.699232<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:342: dns resolution failed (will retry): {"created":"@1524237305.698594518","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":362,"referenced_errors":[{"created":"@1524237305.698535702","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237305.697032250","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237305.690343974","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":303}]}]}]}
D0420 17:15:05.699319<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:345: set: have_next_resolution_timer_ = true
D0420 17:15:05.699369<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:353: retrying in 1000 milliseconds
D0420 17:15:05.699421<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:428: AresDnsResolver::MaybeFinishNextLocked() is called.
D0420 17:15:05.699457<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:433: AresDnsResolver::MaybeFinishNextLocked()
D0420 17:15:05.699501<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:367: AresDnsResolver::OnResolvedLocked() returning.
D0420 17:15:05.699557<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:174: AresDnsResolver::NextLocked() is called.
D0420 17:15:05.699600<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:428: AresDnsResolver::MaybeFinishNextLocked() is called.
I0420 17:15:06.687484<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/subchannel.cc:425: Failed to connect to channel, retrying
I0420 17:15:06.687936<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/subchannel.cc:646: Connect failed: {"created":"@1524237306.687846768","description":"Failed to connect to remote host: OS Error","errno":111,"file":"src/core/lib/iomgr/tcp_client_posix.cc","file_line":201,"os_error":"Connection refused","syscall":"connect","target_address":"ipv4:<IP_ADDRESS>:23456"}
I0420 17:15:06.688040<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/subchannel.cc:470: Subchannel 0x7f4600008ee0: Retry in 1332 milliseconds
D0420 17:15:06.688128<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:371: AresDnsResolver::MaybeStartResolvingLocked() is called.
D0420 17:15:06.688345<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:409: AresDnsResolver::StartResolvingLocked() is called.
D0420 17:15:06.688620<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:131: grpc_ares_ev_driver_create
I0420 17:15:06.688678<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:423: Using DNS server <IP_ADDRESS>:12345
D0420 17:15:06.688941<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:286: new fd: 11
D0420 17:15:06.689021<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.689102<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.689150<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:424: AresDnsResolver::StartResolvingLocked() returning.
D0420 17:15:06.689201<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:405: AresDnsResolver::MaybeStartResolvingLocked() returning.
D0420 17:15:06.693994<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.694268<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:274: on_query_srv_done_cb
D0420 17:15:06.694469<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.694623<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.694758<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.694937<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.695232<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.695386<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.695521<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.695666<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.695863<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.696003<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.696141<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.696291<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.696474<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.696617<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.696758<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.696903<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.697106<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.697220<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.697263<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.697605<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.697711<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.697750<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.697785<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.698148<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.698267<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.698316<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.698372<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.698453<PHONE_NUMBER>59104 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:207: AresDnsResolver::OnNextResolutionLocked() is called.
D0420 17:15:06.698504<PHONE_NUMBER>59104 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:209: set: have_next_resolution_timer_ = false
D0420 17:15:06.698567<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
Exception caught Status(StatusCode=Unavailable, Detail="Connect Failed")
D0420 17:15:06.698647<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.698691<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.698728<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.698954<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.699031<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.699067<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.699100<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.699339<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.699410<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.699445<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.699479<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.699701<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.699793<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.699832<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.699865<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.700083<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.700151<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.700196<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.700230<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.700462<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.700509<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.700553<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.700586<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.700841<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.700899<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.700931<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:06.700968<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.701216<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:06.701262<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:318: on_txt_done_cb
D0420 17:15:06.701304<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.701365<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:101: delete fd: 11
D0420 17:15:06.701396<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:338: ev driver stop working
D0420 17:15:06.701433<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.701466<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:92: destroy ev_driver<PHONE_NUMBER>78480
D0420 17:15:06.701534<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:291: AresDnsResolver::OnResolvedLocked() is called.
D0420 17:15:06.701644<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:339: dns resolution failed: {"created":"@1524237306.701292288","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":362,"referenced_errors":[{"created":"@1524237306.700877450","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237306.700497340","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237306.694408200","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":303}]}]}]}
I0420 17:15:06.701709<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:342: dns resolution failed (will retry): {"created":"@1524237306.701292288","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":362,"referenced_errors":[{"created":"@1524237306.700877450","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237306.700497340","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237306.694408200","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":303}]}]}]}
D0420 17:15:06.701762<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:345: set: have_next_resolution_timer_ = true
D0420 17:15:06.701803<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:353: retrying in 1733 milliseconds
D0420 17:15:06.701850<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:428: AresDnsResolver::MaybeFinishNextLocked() is called.
D0420 17:15:06.701880<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:433: AresDnsResolver::MaybeFinishNextLocked()
D0420 17:15:06.701918<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:367: AresDnsResolver::OnResolvedLocked() returning.
D0420 17:15:06.701968<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:174: AresDnsResolver::NextLocked() is called.
D0420 17:15:06.702003<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:428: AresDnsResolver::MaybeFinishNextLocked() is called.
I0420 17:15:08.019437<PHONE_NUMBER>43712 src/core/ext/filters/client_channel/subchannel.cc:425: Failed to connect to channel, retrying
I0420 17:15:08.019948<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/subchannel.cc:646: Connect failed: {"created":"@1524237308.019819074","description":"Failed to connect to remote host: OS Error","errno":111,"file":"src/core/lib/iomgr/tcp_client_posix.cc","file_line":201,"os_error":"Connection refused","syscall":"connect","target_address":"ipv4:<IP_ADDRESS>:23456"}
I0420 17:15:08.020055<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/subchannel.cc:470: Subchannel 0x7f4600008ee0: Retry in 2386 milliseconds
D0420 17:15:08.020120<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:371: AresDnsResolver::MaybeStartResolvingLocked() is called.
D0420 17:15:08.020161<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:409: AresDnsResolver::StartResolvingLocked() is called.
D0420 17:15:08.020385<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:131: grpc_ares_ev_driver_create
I0420 17:15:08.020437<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:423: Using DNS server <IP_ADDRESS>:12345
D0420 17:15:08.020737<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:286: new fd: 11
D0420 17:15:08.020813<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.020862<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.020905<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:424: AresDnsResolver::StartResolvingLocked() returning.
D0420 17:15:08.020946<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:405: AresDnsResolver::MaybeStartResolvingLocked() returning.
Exception caught Status(StatusCode=Unavailable, Detail="Connect Failed")
D0420 17:15:08.021572<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.021723<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.021782<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.021823<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.022215<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.022362<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.022422<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.022462<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.022832<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.022927<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:274: on_query_srv_done_cb
D0420 17:15:08.023007<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.023048<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.023097<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.023350<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.023472<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.023519<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.023563<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.024294<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.024452<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.024505<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.024553<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.024824<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.024945<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.024997<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.025036<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.025442<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.025582<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.025638<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.025676<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.025951<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.026049<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.026099<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.026133<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.026501<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.026605<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.026658<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.026695<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.027091<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.027239<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.027308<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.027347<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.027609<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.027708<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.027787<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.027834<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.028285<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.028430<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.028481<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.028522<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.028798<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.028905<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.028948<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.028987<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.029387<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.029536<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.029586<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.029630<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.029879<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.029987<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.030030<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.030071<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.030434<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.030541<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.030583<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.030623<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.031006<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.031127<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.031178<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.031215<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.031566<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.031642<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:84: Ref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.031686<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:308: notify read on: 11
D0420 17:15:08.031719<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.032175<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:213: readable on 11
D0420 17:15:08.032262<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc:318: on_txt_done_cb
D0420 17:15:08.032322<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.032384<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:101: delete fd: 11
D0420 17:15:08.032428<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:338: ev driver stop working
D0420 17:15:08.032463<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:90: Unref ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.032500<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc:92: destroy ev_driver<PHONE_NUMBER>78720
D0420 17:15:08.032570<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:291: AresDnsResolver::OnResolvedLocked() is called.
D0420 17:15:08.032760<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:339: dns resolution failed: {"created":"@1524237308.032301259","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":362,"referenced_errors":[{"created":"@1524237308.031622045","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237308.031101901","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237308.022980868","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":303}]}]}]}
I0420 17:15:08.032860<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:342: dns resolution failed (will retry): {"created":"@1524237308.032301259","description":"C-ares TXT lookup status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":362,"referenced_errors":[{"created":"@1524237308.031622045","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237308.031101901","description":"C-ares status is not ARES_SUCCESS: DNS server returned answer with no data","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":258,"referenced_errors":[{"created":"@1524237308.022980868","description":"C-ares status is not ARES_SUCCESS: Domain name not found","file":"src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc","file_line":303}]}]}]}
E0420 17:15:08.033224<PHONE_NUMBER>66400 src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc:344: assertion failed: !r->have_next_resolution_timer_

I looked at the log above first, and I'm pretty sure the root cause lies in the cooldown code.
There is a conflict between the retry logic and the cooldown logic. If we already have a retry timer set when we receive a re-resolution request which falls behind the cooldown period, we will do re-resolution immediately. That is expected, but we also need to cancel the retry timer. Otherwise, when the re-resolution is done, we may find the timer is still on and trigger this assertion failure.
@jtattermusch I will add a test to reproduce it using fake resolver response generator. It's very likely that it can be fixed within next week.

This is the timeline according to the log above. You can see that the first round of re-resolution is fine because the retry timer is set for only 1s. But the next one will be 1.733s, so the timer remains active when the second re-resolution is done.

I just realized that the fake resolver we use in testing doesn't have any cooldown logic (because it doesn't need to do any real resolving). So I will just use the manual testing steps to verify the fix.

@AspirinSJL  thanks for the analysis! I can help verifying the fix once we have a PR - just let me know.


Custom Task & Inline Code Annotations

Environment

Server - VSTS or TFS on-premises?

If using TFS on-premises, provide the version:
Version 15.117.26615.0

Agent - Hosted or Private:

If using private agent, provide the OS of the machine running the agent and the agent version:
Windows 2016 , agent version 2.124.0

Issue Description
This question might need to be in a different repo, if so please point me towards it since it's a mix of task + tfs schema question.
I've got a build task that runs a code analysis task that provides me back xml with file, line, and offset coordinates of a matched issue from the triggering changeset. I was thinking that it would be awesome if I could have those issues inserted into the Code Comments (web based) in TFS so that inline code annotations would show up on the changeset from the build agent on flagged issues and thus could be easily reviewed, commented/resolved, etc.
So far, no luck on finding anyway to reference the associated file and the coordinates in the file when I've reviewed CodeReview.tbl_Discussion or the associated tables.
Do you have any points or a better resource I should point this towards if not appropriate in the custom task area?

not an issue with the /tasks in this repo.  reactivate and specify the task


Adds the possibility of having '0' as a prefix or postfix for different form inputs

[x] Changes have been thoroughly tested to not break existing functionality.
[x] Visual changes are explained in the PR description using a screenshot/recording of before and after.

This PR adds the possibility of having '0' as a prefix or postfix for three form inputs:

text input
select input
color-picker input

I tried to add 0 as a prefix to the phone number input with ->prefix('0') and I noticed it is not being rendered, since it is being evaluated as a falsy parameter for the blade's @if ($label = $getPrefixLabel()) directive.
before prefix fixation:

after prefix fixation:

I don't know if this is the most elegant way to do so or if it is really needed to support both prefixes and postfixes of all three inputs.
I just did every six of them to make it consistent.
Feel free to cherry-pick, make changes in any shape or form, or even close the PR. I just need '0' as a prefix to the text input and I did open the PR to document the desired result, instead of opening an issue.

Hey @danharrin, thank you for merging the PR.
One little gotcha. I noticed you removed the second condition, which I want to elaborate on.
@if (filled($label = $getPrefixLabel()) && ($getPrefixLabel() !== false))
The thing is, filled(false) returns true. So basically providing a closure as a prefix/postfix with the return type of false, makes the blade condition true and that's why I added the second check.
Without the second condition and for the sake of simplicity, having ->prefix(fn () => false) will cause the template to render an empty <span>, which will force a visual effect as well:

Thats fine, I dont see why anyone would use false. Null or an empty string is good

Very well then.


fix bug in the finish function of HardwareMonitor

I found a bug when we finished the simulation.
During cleaning up codes, the finish function was broken.
Now it's fixed.

This change is

Oh, give me a sec.

I'm sorry for bothering you again and again...

I got where was the problem. Let me close this once and fix only where the problem.


Works only one time with setInterval()

I'm calling a function after every 10 minutes on my NodeJS App , but the message is being sent only for the first time and in the response I'm getting response "{
return: true,
request_id: '0nvzj57hm1yd682',
message: [ 'SMS sent successfully.' ]
}"
.But for the second time the message isn't being send and the response is "{ return: false, status_code: 0, message: '' }" . Attaching the code for better understanding , ask if I'm not able to convey my error properly.
const fast2smsAuth = process.env.FAST_TWO_SMS;
const fast2sms = require("fast-two-sms");

function sendSMS(user, centers) {
  var messageOP = `Centers: `;
  messageOP += createMessageForSMS(centers);
  var options = {
    authorization: fast2smsAuth,
    message: messageOP,
    numbers: [user.number],
  };
  fast2sms.sendMessage(options).then((response) => {
    console.log(response);
  }); //Asynchronous Function.
}

function createMessageForSMS(xD) {
  var str = "";
  xD.forEach((center, index) => {
    str += `${center.centerName},Dates:`;
    center.sessionsInCenter.forEach((session, indexOP) => {
      if (indexOP < 2) {
        str += `${session.sessionDate}(Doses_Available:${session.sessionAvailableCapacity}),`;
      }
    });
    str += ";";
  });
  return str;
}

Code : I'm exporting this function and calling it in another file using setTimeInterval(), and here user is an object example:{
name: "Yash",number: "8888888888",pincode: "110006",minimumAge: "45", } and centers is an array .But I've tested the data i.e user and centers it's getting displayed exactly after 10 minutes in log but only the message isn't being send .
Already Thanks

Oh ! . And I think it also goes against the terms and conditions of fast-two-sms.Thanks for the instant feedback ;)