private boolean failRequest(Request request) {
        Site tempSite = this.siteMap.get(request.site);

        // Check if the site exists
        if (tempSite == null) {
            System.out.println("error: site [" + request.site
                    + "] does not exists");
            return false;
        }

        // Check if the site is running
        if (!tempSite.isRunning()) {
            System.out.println("warning : site [" + tempSite
                    + "] is already fail");
            return false;
        }

        // fail the site
        tempSite.fail();

        // abort the transactions that have visited the site.
        for (String transaction : this.visitingTrans.get(tempSite)) {
            // in site the visitingTrans ensures the existence and running
            this.abortRequest(new Request(null, transaction, RequestType.ABORT,
                    null));
        }
        return true;
    }