Task <bool> IMembershipTable.InsertRow(MembershipEntry entry, TableVersion tableVersion) { if (logger.IsVerbose3) { logger.Verbose3(string.Format("SqlMembershipTable.InsertRow called with entry {0} and tableVersion {1}.", entry, tableVersion)); } //The "tableVersion" parameter should always exist when inserting a row as Init should //have been called and membership version created and read. This is an optimization to //not to go through all the way to database to fail a conditional check on etag (which does //exist for the sake of robustness) as mandated by Orleans membership protocol. //Likewise, no update can be done without membership entry. if (entry == null) { if (logger.IsVerbose) { logger.Verbose("SqlMembershipTable.InsertRow aborted due to null check. MembershipEntry is null."); } throw new ArgumentNullException("entry"); } if (tableVersion == null) { if (logger.IsVerbose) { logger.Verbose("SqlMembershipTable.InsertRow aborted due to null check. TableVersion is null "); } throw new ArgumentNullException("tableVersion"); } try { var query = queryConstants.GetConstant(database.InvariantName, QueryKeys.InsertMembershipKey); return(database.InsertMembershipRowAsync(query, deploymentId, entry, tableVersion)); } catch (Exception ex) { if (logger.IsVerbose) { logger.Verbose("SqlMembershipTable.InsertRow failed: {0}", ex); } throw; } }