Port batch 32 JS cluster meta feature implementations
This commit is contained in:
@@ -127,6 +127,57 @@ public sealed partial class Account
|
||||
return (server, jsa, null);
|
||||
}
|
||||
|
||||
internal (NatsServer? Server, JetStream? JetStream, JsAccount? JetStreamAccount) GetJetStreamFromAccount()
|
||||
{
|
||||
_mu.EnterReadLock();
|
||||
var jetStreamAccount = JetStream;
|
||||
_mu.ExitReadLock();
|
||||
if (jetStreamAccount == null)
|
||||
return (null, null, null);
|
||||
|
||||
jetStreamAccount.Lock.EnterReadLock();
|
||||
var jetStream = jetStreamAccount.Js as JetStream;
|
||||
jetStreamAccount.Lock.ExitReadLock();
|
||||
if (jetStream == null)
|
||||
return (null, null, null);
|
||||
|
||||
return (jetStream.Server as NatsServer, jetStream, jetStreamAccount);
|
||||
}
|
||||
|
||||
internal bool JetStreamIsStreamLeader(string stream)
|
||||
{
|
||||
var (server, jetStream, _) = GetJetStreamFromAccount();
|
||||
if (server == null || jetStream == null)
|
||||
return false;
|
||||
|
||||
jetStream.Lock.EnterReadLock();
|
||||
try
|
||||
{
|
||||
return (jetStream.Cluster as JetStreamCluster)?.IsStreamLeader(Name, stream) == true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
jetStream.Lock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
|
||||
internal bool JetStreamIsConsumerLeader(string stream, string consumer)
|
||||
{
|
||||
var (server, jetStream, _) = GetJetStreamFromAccount();
|
||||
if (server == null || jetStream == null)
|
||||
return false;
|
||||
|
||||
jetStream.Lock.EnterReadLock();
|
||||
try
|
||||
{
|
||||
return (jetStream.Cluster as JetStreamCluster)?.IsConsumerLeader(Name, stream, consumer) == true;
|
||||
}
|
||||
finally
|
||||
{
|
||||
jetStream.Lock.ExitReadLock();
|
||||
}
|
||||
}
|
||||
|
||||
internal (bool MaxBytesRequired, long MaxStreamBytes) MaxBytesLimits(StreamConfig? cfg)
|
||||
{
|
||||
_mu.EnterReadLock();
|
||||
|
||||
Reference in New Issue
Block a user