diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index 48e41e9304889fe1c1356ded114ffb6b08f299c7..bc33dd40437ab3bbd6dd9a61193076045f4593e7 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -68,11 +68,21 @@ if (version_compare($installedVersion, '0.3', '<')) {
 // 	$query = OCP\DB::prepare('DROP TABLE `*PREFIX*sharing`');
 // 	$query->execute();
 }
-if (version_compare($installedVersion, '0.3.3', '<')) {
-	OC_User::useBackend(new OC_User_Database());
-	OC_App::loadApps(array('authentication'));
-	$users = OC_User::getUsers();
-	foreach ($users as $user) {
-//		OC_FileCache::delete('Shared', '/'.$user.'/files/');
+
+// clean up oc_share table from files which are no longer exists
+if (version_compare($installedVersion, '0.3.4', '<')) {
+
+	// get all shares where the original file no longer exists
+	$findShares = \OC_DB::prepare('SELECT `file_source` FROM `*PREFIX*share` LEFT JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*filecache`.`fileid` IS NULL');
+	$sharesFound = $findShares->execute(array())->fetchAll();
+
+	// delete those shares from the oc_share table
+	if (is_array($sharesFound) && !empty($sharesFound)) {
+		$delArray = array();
+		foreach ($sharesFound as $share) {
+			$delArray[] = $share['file_source'];
+		}
+		$removeShares = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_source` IN (?)');
+		$result = $removeShares->execute(array(implode(',', $delArray)));
 	}
 }
diff --git a/apps/files_sharing/appinfo/version b/apps/files_sharing/appinfo/version
index 87a0871112f9244bbad0fc8331376317417760b9..448a0fa11cdb5dc89bd34011f071df2a56ee44d9 100644
--- a/apps/files_sharing/appinfo/version
+++ b/apps/files_sharing/appinfo/version
@@ -1 +1 @@
-0.3.3
\ No newline at end of file
+0.3.4
\ No newline at end of file
diff --git a/apps/files_sharing/lib/updater.php b/apps/files_sharing/lib/updater.php
index a43ab2e2a0a5e07ad5188b96b3e481e99c60d69e..08aaa62e252cdb319f95ab27d95607d18646036b 100644
--- a/apps/files_sharing/lib/updater.php
+++ b/apps/files_sharing/lib/updater.php
@@ -57,6 +57,23 @@ class Shared_Updater {
 		}
 	}
 
+	/**
+	 * @brief remove all shares for a given file if the file was deleted
+	 *
+	 * @param string $path
+	 */
+	private static function removeShare($path) {
+		$fileInfo = \OC\Files\Filesystem::getFileInfo($path);
+		$fileSource = $fileInfo['fileid'];
+
+		$query = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_source`=?');
+		try	{
+			\OC_DB::executeAudited($query, array($fileSource));
+		} catch (\Exception $e) {
+			\OCP\Util::writeLog('files_sharing', "can't remove share: " . $e->getMessage(), \OCP\Util::WARN);
+		}
+	}
+
 	/**
 	 * @param array $params
 	 */
@@ -77,8 +94,10 @@ class Shared_Updater {
 	 */
 	static public function deleteHook($params) {
 		self::correctFolders($params['path']);
+		self::removeShare($params['path']);
 	}
 
+
 	/**
 	 * @param array $params
 	 */