public async Task UpdateIAmAlive(MembershipEntry entry) { var data = await bucket.GetAsync <CouchBaseSiloRegistration>(entry.SiloAddress.ToParsableString()); data.Value.IAmAliveTime = entry.IAmAliveTime; var address = CouchbaseSiloRegistrationmUtility.ToMembershipEntry(data.Value).Item1.SiloAddress; await bucket.UpsertAsync <CouchBaseSiloRegistration>(address.ToParsableString(), data.Value).ConfigureAwait(false); }
public async Task <MembershipTableData> ReadRow(SiloAddress key) { List <Tuple <MembershipEntry, string> > entries = new List <Tuple <MembershipEntry, string> >(); IOperationResult <CouchBaseSiloRegistration> row = await bucket.GetAsync <CouchBaseSiloRegistration>(key.ToParsableString()).ConfigureAwait(false); if (row.Success) { entries.Add(CouchbaseSiloRegistrationmUtility.ToMembershipEntry(row.Value, row.Cas.ToString())); } return(new MembershipTableData(entries, new TableVersion(0, "0"))); }
public async Task <bool> UpdateRow(MembershipEntry entry, TableVersion tableVersion, string eTag) { try { CouchBaseSiloRegistration serializableData = CouchbaseSiloRegistrationmUtility.FromMembershipEntry("", entry, eTag); IOperationResult <CouchBaseSiloRegistration> result = await bucket.UpsertAsync <CouchBaseSiloRegistration>(entry.SiloAddress.ToParsableString(), serializableData, ulong.Parse(eTag)).ConfigureAwait(false); return(result.Success); } catch (Exception) { return(false); } }
public async Task <MembershipTableData> ReadAll() { BucketContext b = new BucketContext(bucket); var readAllQuery = new QueryRequest("select meta(membership).id from membership"); readAllQuery.ScanConsistency(ScanConsistency.RequestPlus); readAllQuery.Metrics(false); var ids = await bucket.QueryAsync <JObject>(readAllQuery).ConfigureAwait(false); var idStrings = ids.Rows.Select(x => x["id"].ToString()).ToArray(); IDictionary <string, IOperationResult <CouchBaseSiloRegistration> > actuals = await Task.Run (() => bucket.Get <CouchBaseSiloRegistration>(idStrings));//has no async version with batch reads List <Tuple <MembershipEntry, string> > entries = new List <Tuple <MembershipEntry, string> >(); foreach (var actualRow in actuals.Values) { //var actualRow = await bucket.GetAsync<CouchBaseSiloRegistration>(r["id"].ToString()); entries.Add( CouchbaseSiloRegistrationmUtility.ToMembershipEntry(actualRow.Value, actualRow.Cas.ToString())); } return(new MembershipTableData(entries, new TableVersion(0, "0"))); }
public async Task <IList <Uri> > GetGateWays() { BucketContext b = new BucketContext(ClusterHelper.GetBucket("membership")); var getGateWaysQuery = new QueryRequest("select membership.* from membership"); getGateWaysQuery.ScanConsistency(ScanConsistency.RequestPlus); getGateWaysQuery.Metrics(false); IQueryResult <CouchBaseSiloRegistration> result = await bucket.QueryAsync <CouchBaseSiloRegistration>(getGateWaysQuery); List <System.Uri> r = result.Rows.Where(x => x.Status == SiloStatus.Active && x.ProxyPort != 0).Select(x => CouchbaseSiloRegistrationmUtility.ToMembershipEntry(x).Item1).Select(x => { //EXISTED IN CONSOLE MEMBERSHIP, am not sure why //x.SiloAddress.Endpoint.Port = x.ProxyPort; return(x.SiloAddress.ToGatewayUri()); }) .ToList(); return(r); }