Ваша программа завершает работу, прежде чем SDK сможет завершить запись. setValueAsync
является асинхронным, поэтому возвращается немедленно, когда запись завершается в другом потоке. Это означает, что основная функция также сразу возвращается. Когда ваша основная функция возвращается, Java-процесс завершается, и асинхронная запись никогда не завершается. Что вам нужно сделать, это заставить вашу программу ждать, пока запись не завершится.
setValueAsync возвращает объект ApiFuture , который позволяет отслеживать результат асинхронной операции. Вероятно, самое простое, что вы можете сделать, чтобы заставить вашу программу некоторое время ждать завершения ApiFuture, - это использовать метод get ():
ApiFuture<Void> future = usersRef.setValueAsync(users);
future.get(10, TimeUnit.SECONDS); // wait up to 10s for the write to complete
В реальном производственном коде вы, вероятно, захотите сделать что-то более сложное, например, прослушать результаты ApiFuture, чтобы продолжить ваш код или обработать ошибки.
Подробнее об асинхронных операциях с Admin SDK в этом блоге .