@Override
    public void doSnapShot(final SnapShotDescripter snapDesc, final JobDescriptor jobDesc,
                           final GlobalPhysicalGraph graph) throws SnapShotException {
        File file = new File(getSnapShotDir(snapDesc));
        if (!file.exists()) {
            if (!file.mkdirs()) {
                throw new SnapShotException(null);
            }
        }

        try {
            SerializeUtil.storeObject(snapDesc, new File(getSnapShotDescDir() + "/" + snapDesc.getSnapShotName()));
            SerializeUtil.storeObject(jobDesc.getJob(), getQueueLinkerJobFile(snapDesc));
            SerializeUtil.storeObject(graph, getGlobalPhysicalGraphFile(snapDesc));
        } catch (IOException e) {
            throw new SnapShotException(e);
        }

        workerCore.snapShotJob(jobDesc, snapDesc);
    }