public void scheduleUpdateIfAbsent(String serviceName, String groupName, String clusters) {
        if (!asyncQuerySubscribeService) {
            return;
        }
        String serviceKey = ServiceInfo.getKey(NamingUtils.getGroupedName(serviceName, groupName), clusters);
        if (futureMap.get(serviceKey) != null) {
            return;
        }
        synchronized (futureMap) {
            if (futureMap.get(serviceKey) != null) {
                return;
            }
            
            ScheduledFuture<?> future = addTask(new UpdateTask(serviceName, groupName, clusters));
            futureMap.put(serviceKey, future);
        }
    }
@Test
    void testScheduleUpdateIfAbsentWith500Exception()
            throws InterruptedException, NacosException, NoSuchFieldException, IllegalAccessException {
        nacosClientProperties.setProperty(PropertyKeyConst.NAMING_ASYNC_QUERY_SUBSCRIBE_SERVICE, "true");
        serviceInfoUpdateService = new ServiceInfoUpdateService(nacosClientProperties, holder, proxy, notifier);
        serviceInfoUpdateService.scheduleUpdateIfAbsent(serviceName, group, clusters);
        when(proxy.queryInstancesOfService(serviceName, group, clusters, false)).thenThrow(
                new NacosException(500, "test"));
        TimeUnit.MILLISECONDS.sleep(1500);
        assertTrue(getScheduleFuture().getDelay(TimeUnit.MILLISECONDS) > 2000);
    }