Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/25/09 13:54:15 (15 years ago)
Author:
svonolfe
Message:

Further avoided out of memory exceptions by updating the JobResult DAO (#372)

Location:
trunk/sources/HeuristicLab.Hive.Server.Core/3.2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs

    r2098 r2099  
    385385        if (job2Calculate != null) {
    386386          SerializedJob computableJob =
    387             jobAdapter.GetComputableJob(job2Calculate.Id);
     387            jobAdapter.GetSerializedJob(job2Calculate.Id);
    388388
    389389          response.Job = computableJob;
     
    492492        }
    493493
    494         jobAdapter.UpdateComputableJob(job);
     494        jobAdapter.UpdateSerializedJob(job);
    495495
    496496        List<JobResult> jobResults = new List<JobResult>(
    497           jobResultAdapter.GetResultsOf(job.JobInfo));
     497          jobResultAdapter.GetResultsOf(job.JobInfo.Id));
    498498        foreach (JobResult currentResult in jobResults)
    499499          jobResultAdapter.Delete(currentResult);
    500500
    501         JobResult jobResult =
    502           new JobResult();
     501        SerializedJobResult serializedjobResult =
     502          new SerializedJobResult();
     503        JobResult jobResult = new JobResult();
    503504        jobResult.ClientId = client.Id;
    504505        jobResult.JobId = job.JobInfo.Id;
    505         jobResult.Result = result;
    506506        jobResult.Percentage = percentage;
    507507        jobResult.Exception = exception;
    508508        jobResult.DateFinished = DateTime.Now;
    509 
    510         jobResultAdapter.Update(jobResult);
     509        serializedjobResult.JobResult = jobResult;
     510        serializedjobResult.SerializedJobResultData =
     511          result;
     512
     513        jobResultAdapter.UpdateSerializedJobResult(serializedjobResult);
    511514        jobAdapter.Update(job.JobInfo);
    512515
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientFacade.cs

    r1941 r2099  
    9797      BinaryFormatter formatter =
    9898          new BinaryFormatter();
    99       JobResult result = (JobResult)formatter.Deserialize(stream);
     99      SerializedJobResult result =
     100        (SerializedJobResult)formatter.Deserialize(stream);
    100101
    101102      return this.StoreFinishedJobResult(
    102           result.ClientId,
    103           result.JobId,
    104           result.Result,
    105           result.Percentage,
    106           result.Exception);
     103          result.JobResult.ClientId,
     104          result.JobResult.JobId,
     105          result.SerializedJobResultData,
     106          result.JobResult.Percentage,
     107          result.JobResult.Exception);
    107108    }
    108109
     
    110111      BinaryFormatter formatter =
    111112          new BinaryFormatter();
    112       JobResult result = (JobResult)formatter.Deserialize(stream);
     113      SerializedJobResult result = (SerializedJobResult)formatter.Deserialize(stream);
    113114
    114115      return this.ProcessSnapshot(
    115           result.ClientId,
    116           result.JobId,
    117           result.Result,
    118           result.Percentage,
    119           result.Exception);
     116          result.JobResult.ClientId,
     117          result.JobResult.JobId,
     118          result.SerializedJobResultData,
     119          result.JobResult.Percentage,
     120          result.JobResult.Exception);
    120121    }
    121122
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ExecutionEngineFacade.cs

    r2092 r2099  
    4444    }
    4545
    46     public ResponseObject<JobResult> GetLastResult(Guid jobId, bool requested) {
    47       return jobManager.GetLastJobResultOf(jobId, requested);
     46    public ResponseObject<SerializedJobResult>
     47      GetLastSerializedResult(Guid jobId, bool requested) {
     48      return jobManager.GetLastSerializedJobResultOf(jobId, requested);
    4849    }
    4950
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/JobManager.cs

    r2092 r2099  
    4848    }
    4949
    50     private JobResult GetLastJobResult(Job job) {
     50    private JobResult GetLastJobResult(Guid jobId) {
    5151      ISession session = factory.GetSessionForCurrentThread();
    5252
     
    5555            session.GetDataAdapter<JobResult, IJobResultsAdapter>();
    5656
    57         return jobResultAdapter.GetLastResultOf(job);
     57        return jobResultAdapter.GetLastResultOf(jobId);
    5858      }
    5959      finally {
     
    7070        IJobAdapter jobAdapter =
    7171            session.GetDataAdapter<Job, IJobAdapter>();
     72
     73        IJobResultsAdapter jobResultsAdapter =
     74          session.GetDataAdapter<JobResult, IJobResultsAdapter>();
    7275
    7376        tx = session.BeginTransaction();
     
    7982            job;
    8083
    81           JobResult lastJobResult = GetLastJobResult(job);
    82           if (lastJobResult != null) {
    83             computableJob.JobInfo.Percentage = lastJobResult.Percentage;
    84             computableJob.SerializedJobData = lastJobResult.Result;
    85 
    86             jobAdapter.UpdateComputableJob(computableJob);
     84          JobResult lastResult =
     85            GetLastJobResult(job.Id);
     86
     87          if (lastResult != null) {
     88            SerializedJobResult lastJobResult =
     89              jobResultsAdapter.GetSerializedJobResult(lastResult.Id);
     90
     91            if (lastJobResult != null) {
     92              computableJob.JobInfo.Percentage = lastJobResult.JobResult.Percentage;
     93              computableJob.SerializedJobData = lastJobResult.SerializedJobResultData;
     94
     95              jobAdapter.UpdateSerializedJob(computableJob);
     96            } else {
     97              computableJob.JobInfo.Percentage = 0;
     98            }
    8799          } else {
    88100            computableJob.JobInfo.Percentage = 0;
     
    223235
    224236          job.JobInfo.DateCreated = DateTime.Now;
    225           jobAdapter.UpdateComputableJob(job);
     237          jobAdapter.UpdateSerializedJob(job);
    226238          response.Success = true;
    227239          response.Obj = job.JobInfo;
     
    271283    }
    272284
    273     public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
    274       ISession session = factory.GetSessionForCurrentThread();
     285    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId) {
     286       ResponseObject<JobResult> result =
     287        new ResponseObject<JobResult>();
     288
     289       result.Obj =
     290         GetLastJobResult(jobId);
     291       result.Success =
     292         result.Obj != null;
     293
     294       return result;
     295    }
     296
     297    public ResponseObject<SerializedJobResult>
     298      GetLastSerializedJobResultOf(Guid jobId, bool requested) {
     299      ISession session = factory.GetSessionForCurrentThread();
     300
     301      ITransaction tx = null;
    275302
    276303      try {
     
    278305            session.GetDataAdapter<Job, IJobAdapter>();
    279306
    280         ResponseObject<JobResult> response = new ResponseObject<JobResult>();
     307        IJobResultsAdapter jobResultsAdapter =
     308          session.GetDataAdapter<JobResult, IJobResultsAdapter>();
     309
     310        tx = session.BeginTransaction();
     311
     312        ResponseObject<SerializedJobResult> response =
     313          new ResponseObject<SerializedJobResult>();
    281314
    282315        Job job = jobAdapter.GetById(jobId);
     
    284317          response.Success = true;
    285318          response.StatusMessage = ApplicationConstants.RESPONSE_JOB_RESULT_NOT_YET_HERE;
     319
     320          tx.Commit();
     321         
    286322          return response;
    287323        }
    288          
    289         response.Success = true;
    290         response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
    291         response.Obj = GetLastJobResult(job);
    292 
    293         return response;
    294       }
    295       finally {
    296         if(session != null)
    297           session.EndSession();
    298       }
    299     }
     324
     325        JobResult lastResult =
     326          jobResultsAdapter.GetLastResultOf(job.Id);
     327
     328        if (lastResult != null) {
     329          response.Success = true;
     330          response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
     331          response.Obj =
     332            jobResultsAdapter.GetSerializedJobResult(
     333              lastResult.Id);         
     334        } else {
     335          response.Success = false;
     336        }
     337
     338        tx.Commit();
     339        return response;
     340      }
     341      catch (Exception ex) {
     342        if (tx != null)
     343          tx.Rollback();
     344        throw ex;
     345      }
     346      finally {
     347        if (session != null)
     348          session.EndSession();
     349      }
     350    }
     351
    300352
    301353    public Response RequestSnapshot(Guid jobId) {
     
    385437          return response;
    386438        }
    387         response.List = new List<JobResult>(jobResultAdapter.GetResultsOf(job));
     439        response.List = new List<JobResult>(jobResultAdapter.GetResultsOf(job.Id));
    388440        response.Success = true;
    389441        response.StatusMessage = ApplicationConstants.RESPONSE_JOB_JOB_RESULT_SENT;
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ServerConsoleFacade.cs

    r2092 r2099  
    104104    }
    105105
    106     public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId, bool requested) {
     106    public ResponseObject<JobResult> GetLastJobResultOf(Guid jobId) {
    107107      secMan.Authorize("AccessJobResults", sessionID, jobId);
    108       return jobManager.GetLastJobResultOf(jobId, requested);
     108      return jobManager.GetLastJobResultOf(jobId);
     109    }
     110
     111    public ResponseObject<SerializedJobResult> GetLastSerializedJobResultOf(Guid jobId, bool requested) {
     112      secMan.Authorize("AccessJobResults", sessionID, jobId);
     113      return jobManager.GetLastSerializedJobResultOf(jobId, requested);
    109114    }
    110115
Note: See TracChangeset for help on using the changeset viewer.