Title: Database Client Example
1Database Client Example
www.upenn.edu
www.microsoft.com
www.drexel.edu
Receive data
Network Connection
Request data
DBClient
2Description of the DBClient
- A client establishes connection and requests data
periodically every 1 sec - It randomly chooses a server and tries to
establish network connection with timeout 3 ms.
It repeats this for 3 tries - It requests data with timeout 1 ms. It repeats
this for 4 tries - Fault tolerant
- A client uses old data in case that it can not
get new data due to either connection failure or
request failure
3Properties Monitored
- Fault Tolerant
- Old data is used only when new data cant be
obtained due to connection failure or
unresponsive server - Other properties
- Time-out Events
- Connection timeout and request timeout
- Periodicity
- The client is periodic, i.e., every 1 sec it
tries to query new data - Miss Ratio of Network Connection
- The ratio of number of successful connection over
number of total connection tries
4MEDL Script
- ReqSpec DBClient
- import event startPgm, periodStart, conStart,
conFail, queryResend, oldDataUsed - var long periodTime
- var long lastPeriodStart
- var int numRetries
- var int numConStart
- var int numConFail
- var int numConFailPeriod
- /_of_connection_retry3, _of_read_retry4/
- alarm wrongFT
- oldDataUsed when
- ( (numConFailPeriod lt 3) (numRetries lt 4 ) )
- property periodic (periodTime gt 900)
(periodTime lt 1100)
- startPgm -gt
- periodTime 1000
- lastPeriodStart time(startPgm)
numRetries 0 - numConStart 0
- numConFail 0
- numConFailPeriod 0
- periodStart -gt
- periodTime time(periodStart) -
lastPeriodStart - lastPeriodStart time(periodStart) numRetries
0 - numConFailPeriod 0
- queryResend -gt
- numRetries numRetries 1
- conStart -gt
- numConStart numConStart 1
- conFail -gt
- numConFail numConFail 1
- numConFailPeriod numConFailPeriod1
- End
5PEDL Scripts
MonScr DBClient export event startPgm,
periodStart, conStart, conFail, queryResend,
oldDataUsed monobj int DBClient.connect().index
monmeth void DBClient.main(String) monmeth
void DBClient.run() monmeth void
ConnectTry.ConnectTry(String,int) monmeth void
DBClient.failConnection(ConnectTry) monmeth
Object DBClient.retryGetData(int) monmeth void
DBClient.processOldData() event conFail0
startM(DBClient.failConnection(ConnectTry))
when DBClient.connect().index 0 ... Event
conFail conFail0 conFail1 confFail2
event queryResend0 startM(DBClient.retryGet
Data(int)) when DBClient.connect().index
0 ... event queryResend queryResend0
queryResend1 queryResend2 event oldDataUsed
startM(DBClient.processOldData()) event
startPgm startM(DBClient.main(String
)) event periodStart startM(DBClient.run()
) event conStart startM(ConnectTry.Connect
Try(String,int)) end
6DB Client Monitoring Structure at Run-time
Receive data
Network Connection
Request data
Instrumented DBClient
GUI