Wir haben unter ADS 10 und 11 - nicht aber mit älteren Versionen - in einigen Situationen mit DBFNTX das Problem, dass es gelegentlich, aber immer an der gleichen Stelle zum ADS-Fehler 7039 (in "index.c" gemäß ADS_ERR.ADT) kommt. Dieser Fehler tritt angeblich auf, wenn versucht wird, eine Tabelle (die Doku spricht von "File") exklusiv zu öffnen, die anderswo im "Shared"-Modus geöffnet ist. Tatsächlich aber ist das erstens definitiv nicht der Fall, und zweitens besteht die Besonderheit der Fehlersituation darin, dass in der fraglichen Codezeile ganz simpel das hier geschieht:
USE (cTable) INDEX (cIndex1),(cIndex2),(cIndex3) ALIAS XY NEW
Zuvor sind Dutzende weiterer Tabellen und Indexe geöffnet worden. Limits werden jedoch nicht überschritten.
Anschließend ist "cTable" geöffnet (!), und der Fehler - bei "DbSetIndex" - verweist auf einen der Indexe, aber nicht immer auf den gleichen. Das geschieht in vergleichsweise großen (absolut sauber konfigurierten) Netzen, und zwar in Fensterkreuz mal Pi einem von fünfzig Fällen. Es ist nichts beschädigt, es gibt keine äußeren Einflüsse, gleich anschließend geht es wieder. Es spielt keine Rolle, ob zwei oder zwanzig Benutzer aktiv sind und/oder die fragliche Tabelle verwenden.
Das propreitäre Locking der ADS ist aktiv. Leider lässt sich die Situation absolut nicht nachstellen, tritt aber vier bis sechs Mal täglich ein. Irritierend ist, dass die Tabelle ja tatsächlich geöffnet wird, nicht aber einer der Indexe. Meistens ist es der zweite oder dritte (jedenfalls nach Parameter-Auskunft des Fehlerobjekts). An vielen, vielen Stellen in der App wird ganz ähnlich verfahren, aber nur an dieser tritt das Problem auf.
ADS: Fehler 7039
Moderator: Moderatoren
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: ADS: Fehler 7039
Ah. Bin auf der Spur. Nach einiger Stöberei in der "Advantage DevZone" habe ich herausbekommen, dass dieser Fehler auch auftreten kann, wenn man eine Tabelle mit einem Index öffnet, der bereits für eine andere Tabelle geöffnet ist (was man natürlich nie tun sollte, weil es schlicht ziemlich idiotisch ist). Irgendwo muss es also einen Typo geben, denn es geht an der fraglichen Stelle um Tabellen- und Indexnamen, die aus einem Präfix, einer Nummer und - bei den Indexen - aus einem weiteren Zähler bestehen (also DB0001.DBF, DB00011.NTX, DB00012.NTX usw.). Irgendwo öffne ich DB0001.DBF mit DB00021.NTX und will dann anschließend DB0002.DBF mit DB00021.NTX öffnen. Was ohne ADS geht (aber natürlich auch Blödsinn ist).
Herzlich,
Tom
Tom
- nightcrawler
- 1000 working lines a day
- Beiträge: 651
- Registriert: Di, 24. Apr 2012 16:33
- Wohnort: 72184 Weitingen
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 96 Mal
- Kontaktdaten: