private void setPropertyValue(ProjectId projectId, String propertyName, String propertyValue) {
   try {
     WRITE_LOCK.lock();
     ProjectInstance pi = getProjectInstance(projectId);
     MetaProject mp = getMetaProject();
     PropertyValue pv = mp.createPropertyValue(propertyName, propertyValue);
     Set<PropertyValue> propertyValues = new HashSet<PropertyValue>(pi.getPropertyValues());
     for (Iterator<PropertyValue> it = propertyValues.iterator(); it.hasNext(); ) {
       PropertyValue curPv = it.next();
       if (curPv.getPropertyName().equals(propertyName)) {
         it.remove();
       }
     }
     propertyValues.add(pv);
     pi.setPropertyValues(propertyValues);
     //            Should be threaded off
     save();
   } finally {
     WRITE_LOCK.unlock();
   }
 }