Je tirai une nouvelle ERO sur Google Cloud Compute ubuntu vm et essaie d'écrire des objets via un projet Xamarin.Android:Royaume Object Server affiche vide après l'ajout d'éléments
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();
};
Le résultat est que le nouveau domaine est créé avec succès sur le ROS distant, mais il reste vide selon le tableau de bord et le navigateur de domaine même après plusieurs exécutions de ce code. Vous remarquerez dans mon commentaire que le domaine local contient les objets écrits, mais pas la télécommande. Les journaux du serveur affichent beaucoup de messages lorsque ce code est exécuté, mais il n'y a pas d'avertissement ou d'erreur. Qu'ai-je manqué?
Pouvez-vous essayer d'ajouter 'await realm.GetSession(). WaitForUploadAsync()' à la fin, les données locales auront été synchronisées avec le Realm Object Server. Voici les docs: https://realm.io/docs/xamarin/1.6.0/api/reference/Realms.Sync.Session.html#Realms_Sync_Session_WaitForUploadAsync –
@NikolaIrinchev le code ne semble jamais progresser après WaitForUploadAsync. Les points de rupture ne sont pas atteints et les appels System.Diagnostic.Debug.WriteLine ne s'impriment pas. Toujours pas d'erreur dans un bloc try/catch ou Session.Error. Je rencontre ce comportement si je place cet appel avant même d'écrire quoi que ce soit dans le domaine. Sortie de l'application: [Mono] DllImport cherchant dans: 'realm-wrappers' ('librealm-wrappers.so'). [Mono] Recherche de 'realm_syncsession_wait'. [Mono] Sondage 'realm_syncsession_wait'. [Mono] Trouvé comme 'realm_syncsession_wait'. [Mono] [0x96d92930] travailleur non pris en compte, délai d'expiration? pas interrompu? non – aweFalafelApps
Hm ... une autre question, votre 'realmUrl' semble manquer du port dans l'extrait que vous avez posté - est-ce le cas dans votre application, ou juste un oubli lorsque vous collez du code sur SO? Si c'est le cas, alors vous avez besoin du port comme 'realm: //###.###.###: 9080/~/newrealm' –