MongoDB सी # बदलती प्रतिकृति सेट विन्यास

मैं मोंगोडीबी के साथ काम करने के लिए सी # ड्राइवर का उपयोग कर रहा हूं। मुझे निष्पादन के दौरान सेट कॉन्फ़िगरेशन को अद्यतन करने के लिए अपने प्रोग्राम का उपयोग करने की आवश्यकता है, और फिर प्रोग्राम के अन्य हिस्सों को ड्राइवर का उपयोग जारी रखने की अनुमति दें।

मेरा वर्तमान मुद्दा ड्राइवर को नए सेट का उपयोग करने के लिए पुन: कॉन्फ़िगर कर रहा है।

try
{
    var res = Database.Admin.RunCommand(new CommandDocument("replSetReconfig", replicaSetConfig));
}
catch (EndOfStreamException){}
catch (Exception e)
{
    Log.Exc("Problem updating replica set", e);
    ranCommand = false;
}
if (ranCommand)
{
HERE - I need to update the MongoClient or MongoServer to have the new servers
    return;
}

मुझे लगता है कि एक EndOfStreamException कब होता है, कि आदेश सफल रहा है, क्योंकि सर्वर ने एक शट डाउन/बंद कर दिया है।

मैं यह सुनिश्चित करने के लिए ड्राइवर को अद्यतन करना चाहता हूं कि यह सुनिश्चित करने के लिए कि यह कम से कम एक सर्वर से कनेक्ट हो जाए, किसी भी किनारे के मामलों में जहां कॉन्फ़िगरेशन बदलना इसे मूल कनेक्शन स्ट्रिंग से कनेक्ट करने से रोक देगा।

क्या इसे प्राप्त करने का कोई तरीका है?

एक अतिरिक्त सवाल के रूप में, वर्तमान प्रतिकृति सेट कॉन्फ़िगरेशन संस्करण निर्धारित करने के लिए सी # से कोई तरीका है?

धन्यवाद

0

1 उत्तर

मैं आपके प्रश्न के भाग 2 का उत्तर दे सकता हूं - आप मौजूदा प्रतिकृति सेट कॉन्फ़िगरेशन प्राप्त करने के लिए स्थानीय डेटाबेस से पूछ सकते हैं:

MongoServer server = client.GetServer();
var local = server.GetDatabase("local"); 
var collection = local.GetCollection("system.replset");
var cfg = collection.FindOne(); 
Console.WriteLine(cfg["version"]);

मैं कल्पना करता हूं कि यदि मूल कनेक्शन स्ट्रिंग अब मान्य नहीं है, तो आपको एक नई कनेक्शन स्ट्रिंग के साथ एक नया MongoClient ऑब्जेक्ट बनाना होगा।

[बाद में] आप व्यवस्थापक डेटाबेस पर replSetGetStatus कमांड चलाकर, अपनी स्थिति सहित प्रतिकृति सेट के बारे में सबकुछ भी प्राप्त कर सकते हैं।

0
जोड़ा