private boolean readOnlyRequest(Request request) {

        // Presumption: transaction exists, transaction running
        // check each site that this transaction have snapshot,
        // [this.transInfo.get(request.transaction)] transaction Entity of the
        // transaction,
        for (Site site : this.transInfo.get(request.transaction).visitedSites) {

            // Presumption: resource exists.
            // check if the site have the resources.
            // [this.sitesAvaliable.get(request.resource)] is all the sites that
            // contains the resources
            if (!this.sitesAvaliable.get(request.resource).contains(site))
                continue;

            // check if the site is running
            if (!site.isRunning())
                continue;

            // check if the recourse is available on that site
            if (site.isRecovering(request.resource))
                continue;

            // send request to site and return true;
            System.out.println(site.exeRequest(new Request(request.resource,
                    request.transaction, RequestType.ROREAD, null)));
            return true;
        }

        System.out
                .println("["
                        + request.transaction
                        + "] is going into the wail list because there is no site have avaliable data currently");

        this.waitingList.add(request);
        return false;
    }