[ gdjuric @ 22.05.2007. 10:24 ] @
Pozdrav svima!

Imam zanimljiv problem kojim se bavim nekoliko sati. Knjigovodstveni program izbacuje gresku "TNS: no listener" pri pokusaju pristupa bazi podataka.

Zanimljivo je to da se greska pojavljuje samo ako se program pokrene nezavisno od visual studia, ako ga pokrenem sa Start debugging iz vs-a sve radi OK !!! Cak, ako ga pokrenem iz vs-a sa Start without debugging - takodje ne radi. Interesantno je da je sve bilo OK do danas. U pitanju je windows-forms aplikacija, koristim .net 2.0 , visual studio 2005, baza je oracle 9.0 ...

Ako neko ima neku ideju ...
[ gdjuric @ 22.05.2007. 11:17 ] @
Analiza situacije

1. baza podataka se nalazi na serveru u lokalnoj mrezi
2. program ne uspeva da pristupi oracle serveru ako se pokrene nezavisno
3. program uspeva da pristupi oracle serveru ako se pokrene iz VS-a sa opcijom start debugging
4. program ne uspeva da pristupi oracle serveru ako se pokrene iz VS-a sa opcijom start without debugging

hmmm... Sta je razlicito za ova tri nacina pokretanja programa a sto moze da utice na dostupnost baze?
[ negyxo @ 22.05.2007. 13:16 ] @
Najkraci odgovor, verovatno optimizacija i VS debuger. Postuj deo koda koji ne radi.
Huh, probacu da najdem jedan clanak u kome je pisalo bas o slicnom slucaju, prokleti firefox mi #### bookmarks, pa sam sad ko slep
[mod: bez takvih reci, please]


[Ovu poruku je menjao mmix dana 22.05.2007. u 15:04 GMT+1]
[ mmix @ 22.05.2007. 14:09 ] @
Hmm, toliko o babama i zabama, bas bi i ja voleo da znam kakve veze ima debug mode visual studia sa listenerom udaljenog oracle servera.

[ negyxo @ 22.05.2007. 16:07 ] @
Off...
sorry na izrazu nece se ponoviti, problem je zaista u tome sto mi je firefox sve bookmarkse pojeo, mozda na prvi pogled nista strasno ali mnoge koirsne linkove sada nemam.

OnTopic
Sto se tice debugera zaista ne znam da li ima veze sa njegovim problemom ali mi je palo kao jedno od mogucih problema. Direktnih veza mozda nema ali indirektnih... moguce. A evo i linka (function evaluation) koji sam jedva nasao.

Deo koda

Code:

class Handle
{   
    public bool CheckSomething() { return true; }
}
 

class BehavingBadly
{
    private Handle handle;

    public Handle Handle
    {
        get
        {
            if (handle == null)
                handle = new Handle();

            return handle;
        }
    }

    public void DoSometing()
    {
        if (handle.CheckSomething()) { }
    }
}

 

class Program

{
    static void Main(string[] args)

    {
        BehavingBadly bb = new BehavingBadly();
        bb.DoSometing();
    }
}


Ovo je sve pitanje da li se kod njega desio taj splet okolnosti. Moguce je da je nesto izmenio u programu sto je izazvalo exception pa je zatim pokusao u debug-u da vidi sta se desava i zatim da recimo ima nesto slicno BehavingBadly klasa, field member handle - za koji je mozda hteo da proveri u debugeru vrednost tako sto je misem dodje do objekta i pogleda property-je (standardni debuging) ili moze imati u watch windowu postavljen bb.Handle (iz ovog gornje primera), kada to uradi onda dolazi do onog "function evaluation" ako sam ja dobro razumeo, sto moze izazvati promenu vrednosti. Na kraju u editoru ce samo elegantno preci preko te linije koja inace izaziva exception kada se ne poziva "FuncEval". Naravno, ne kazem da je ovo slucaj ali moglo bi biti jedno od problema.
[ gdjuric @ 30.05.2007. 09:35 ] @
Resenje je pronadjeno, i kao sto se to cesto desava - na neocekivanom mestu. Ispostavilo se da zone alarm (koji je bio iskljucen) ipak blokira pozivanje mreznog oracle servera. Kada sam ga ukljucio (zone alarm), prijavio je da konkretan program pokusava pristup trusted zoni i bilo je dovoljno jedno 'allow' ...

Ono sto je mene zbunilo, je naravno to sto ocekujemo da izvrsni program i program pokrenut kros v.studio uvek i bez izuzetka rade identicno. Ako i ima neke live optimizacije od vs-a to ne bi smelo da utice na taj nacin. Vec mi je sve mirisalo na neki gadan bug vs-a, no nije bas uvek kriv MS :)

Izvinjavam se na kasnom prijavljivanju resenja ... bio sam par dana na 'odmoru'.