Сервер объектов Realm показывает пустым после добавления элементов

Я запустил новую ROS на Google Cloud Compute ubuntu vm и пытаюсь писать объекты через проект Xamarin.Android:

public class TestObject : RealmObject
{
    public string TestString { get; set; }
    public int TestInt { get; set; }
}

//new non-existent realm, I also tried a public realm -> realm://###.###.###.###/newrealm
var realmUrl = "realm://###.###.###.###/~/newrealm";

//preconfigured admin credentials
var creds = Credentials.UsernamePassword("[email protected]", "password", false);
var user = await User.LoginAsync(creds, new Uri("http://###.###.###.###:9080"));
var config = new SyncConfiguration(user, new Uri(realmUrl));
var realm = Realm.GetInstance(config);

//this event never fires
Session.Error += (sender, errorArgs) => { var ex = errorArgs.Exception; };

//left this in just to be sure there were no permissions issues
await user.ApplyPermissionsAsync(PermissionCondition.Default, realmUrl, AccessLevel.Write);

//this will contain objects on subsequent runs
var existing = realm.All<TestObject>().ToList();

//also tried realm.Write(() => { });
using (var trans = realm.BeginWrite())
{
    var test = new TestObject();
    test.TestString = "test";
    test.TestInt = 99;
    realm.Add(test);
    trans.Commit();
};

The result is that the new realm is created successfully on the remote ROS, but it remains empty according to the dashboard and the Realm Browser even after multiple runs of this code. You'll notice in my comment that the local realm does contain the written objects, just not the remote. The server logs show a lot of messages when this code is executed, but there are no warnings or errors. What have I missed?


person aweFalafelApps    schedule 29.08.2017    source источник
comment
Можете ли вы попробовать добавить await realm.GetSession().WaitForUploadAsync() - после завершения локальные данные будут синхронизированы с сервером объектов Realm. Вот документы: realm.io/ документы/xamarin/1.6.0/api/ссылка/   -  person Nikola Irinchev    schedule 30.08.2017
comment
@NikolaIrinchev код, кажется, никогда не проходит дальше WaitForUploadAsync. Точки останова не достигаются, а вызовы System.Diagnostic.Debug.WriteLine не печатаются. По-прежнему нет ошибок в любом блоке try/catch или Session.Error. Я испытываю такое поведение, если размещаю этот вызов еще до того, как напишу что-либо в области. Вывод приложения: [Mono] DllImport ищет в: 'realm-wrappers' ('librealm-wrappers.so'). [Моно] Поиск «realm_syncsession_wait». [Моно] Проверка «realm_syncsession_wait». [Моно] Найдено как «realm_syncsession_wait». [Моно] [0x96d92930] рабочий процесс распарковки, тайм-аут? не прерывается? нет   -  person aweFalafelApps    schedule 30.08.2017
comment
Хм ... еще один вопрос, вашему realmUrl, похоже, не хватает порта в опубликованном вами фрагменте - это так в вашем приложении или просто оплошность при вставке кода на SO? Если это так, то вам нужен порт типа realm://###.###.###.###:9080/~/newrealm   -  person Nikola Irinchev    schedule 30.08.2017
comment
@NikolaIrinchev Большое спасибо, что нашли время помочь!   -  person aweFalafelApps    schedule 30.08.2017


Ответы (1)


Спасибо Николе за то, что я понял, что мне не хватает номер порта в URL области. После добавления вроде все работает.

var realmUrl = "realm://###.###.###.###:9080/~/newrealm";

Кажется странным, что никаких ошибок не возникало, объекты просто молча не записывались в удаленную область.

person aweFalafelApps    schedule 30.08.2017
comment
Рад, что помог! Чтобы уточнить отсутствие ошибок, мобильная платформа Realm спроектирована так, чтобы хорошо работать, когда устройство находится в автономном режиме. В этом случае, когда он не может подключиться к серверу, он предполагает, что он отключен или сервер недоступен по какой-либо причине (например, прокси-сервер или другие проблемы с сетью). Таким образом, он хранит данные локально, и всякий раз, когда подключение восстанавливается, он загружает все. - person Nikola Irinchev; 30.08.2017
comment
Возможно, можно было бы хотя бы показать какой-то диагностический вывод, когда сетевое подключение присутствует, но подключение к удаленной области невозможно? - person aweFalafelApps; 31.08.2017