{ "id": "85506", "key": "TIMOB-7605", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "12096", "description": "", "name": "Sprint 2012-04", "archived": true, "released": true, "releaseDate": "2012-02-26" }, { "id": "12593", "name": "Release 2.0.0", "archived": false, "released": true, "releaseDate": "2012-03-30" }, { "id": "13070", "description": "Release 1.8 Service Pack 2", "name": "Release 1.8.2", "archived": true, "released": true, "releaseDate": "2012-02-29" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-02-14T15:42:20.000+0000", "created": "2012-01-25T21:00:34.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "1.8.0.1", "httpclient", "module_filesystem", "parity", "qe-testadded" ], "versions": [], "issuelinks": [ { "id": "15131", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "outwardIssue": { "id": "79438", "key": "TIMOB-5052", "fields": { "summary": "ios: Regression with ASIHTTPRequest after upgrade", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "15332", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "85920", "key": "TIMOB-7728", "fields": { "summary": "iOS: createHTTPClient shoud have a new parameter to enable/disable the cache.", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "15895", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "86676", "key": "TIMOB-7713", "fields": { "summary": "Parity: Android does not write downloaded file to directory while iOS writes it to the directory", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Low", "id": "4" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2012-03-22T16:20:14.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10206", "name": "iOS", "description": "iOS Platform" } ], "description": "I'm writing a file-syncing app which requires transfer certain files multiple times into folders to then display the resulting html. This means that some files - like css, js, icon images, etc. - get transferred multiple times. This worked like a charm on 1.7.5. When I upgraded to 1.8.0.1, the SDK now only transfers the file once. The call to httpClient.send appears to work - no error gets thrown, all the callbacks fire as expected - but the actual file that is requested never gets saved where it is told to save.\r\n\r\nWe're using the standard way of transferring files, where 'assetrowsresult' is the results from the database of the source and destination paths of files to be moved:\r\n\r\nc.open('GET', assetrowsresult.fieldByName('source'));\r\nc.file = Titanium.Filesystem.getFile(basepath(current_project) + assetrowsresult.fieldByName('dest'));\r\nc.send();\r\n\r\nAgain, this worked fine in 1.7.5 ... so something changed. I'd be happy just knowing how to turn the cache off for transfers if such a switch exists.", "attachment": [ { "id": "25717", "filename": "app.js", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T17:25:43.000+0000", "size": 4141, "mimeType": "text/javascript" } ], "flagged": false, "summary": "iOS: httpClient file transfers appear to be cached in 1.8.0.1", "creator": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "OSX SL / iOS 4&5", "comment": { "comments": [ { "id": "180658", "author": { "name": "mark.henderson@snagr.co.uk", "key": "mark.henderson@snagr.co.uk", "displayName": "Mark Henderson", "active": true, "timeZone": "Europe/London" }, "body": "My experience is similar, but seems to stretch to writing all files. For example:\r\n\r\nvar filex = Titanium.Filesystem.getFile(Titanium.Filesystem.tempDirectory + \"/tempImg.png\");\r\nif (filex != null) {\r\n filex.deleteFile(); \r\n}\r\n\t\r\nvar filename = Titanium.Filesystem.tempDirectory + \"/tempImg.png\";\r\nvar f = Titanium.Filesystem.getFile(filename);\r\nf.write(event.media);\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\nimage320.image = f.nativePath;\r\n\r\nImage320's image will not be replaced by the new image in event.media, but use the one that's just been deleted still!\r\nThe only way I got round this was to not bother deleting and write a new file using a GUID. Not ideal, and only in 1.8.0.1.. Seeing someone else with a similar problem has prompted me to flag it up..\r\n\r\nThx.", "updateAuthor": { "name": "mark.henderson@snagr.co.uk", "key": "mark.henderson@snagr.co.uk", "displayName": "Mark Henderson", "active": true, "timeZone": "Europe/London" }, "created": "2012-01-26T01:24:18.000+0000", "updated": "2012-01-26T01:24:18.000+0000" }, { "id": "180659", "author": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "body": "What's scary is that my file transfer logic triggers going to the next file in the list on the onload() callback from the current file. And that works fine, even though no file is actually deposited where I'm telling it to go. So TI is acting like it wrote the file and all is well, when in fact it didn't. \r\n\r\nI'm writing each instance of the common css/js/png files to different folders. So TI *should* see these as distinct file writes. I even tried adding \"'?rand=' + Math.random()\" to the URL to make it more unique, but that didn't help either. I also deleted the synced projects and re-synced from scratch - so that the writes would go into empty folders - and the same thing happened, the assets which are common between projects only wrote once, even though my sync status log showed it thinks it wrote them a bunch of times.\r\n\r\nAnyway ... I've backed off to 1.7.5 for now.", "updateAuthor": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-01-26T01:48:24.000+0000", "updated": "2012-01-26T01:48:24.000+0000" }, { "id": "182274", "author": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Any progress on this? I'd love to be able to upgrade to 1.8.1 but it'd break our app with this problem.", "updateAuthor": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-07T14:29:15.000+0000", "updated": "2012-02-07T14:29:15.000+0000" }, { "id": "182623", "author": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "body": "I did some more testing on this. It definitely feels like cache-based. I built a simple function to download a file into a folder. I rigged a button to call that function 5 times - for the same file into 5 different folders. Here's the behavior:\r\n\r\n1) When called normally, the first time the button was clicked, the file was downloaded into the first 4 folders, but not the fifth.\r\n\r\n2) When I delete the files that were downloaded and click the button again, the file was not downloaded into any folder.\r\n\r\n3) When I restart the app and add a 1-second sleep after the call to the first download from the button callback, the file was only downloaded into the first folder, not the other four. So the sleep timer gave Titanium a chance to see that the file was already downloaded and then it bypassed it from there on.\r\n\r\nNote that in each case I'm getting a valid onload() callback and a fully complete e.progress status. Everything from the system tells me that it has copied the file, even though it has not. That's what really makes this dangerous, the developer is given no indication that the file hasn't been transferred.\r\n\r\nThis bug is preventing us from upgrading from 1.7.5 - which is making the whole app less stable because we can't get the bug fixes since that release.", "updateAuthor": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T12:20:43.000+0000", "updated": "2012-02-09T12:20:43.000+0000" }, { "id": "182674", "author": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "body": "We need to make sure that our fix correctly addresses your use case so please provide a complete test case to reproduce this issue.", "updateAuthor": { "name": "ngupta", "key": "ngupta", "displayName": "Neeraj Gupta", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T16:00:24.000+0000", "updated": "2012-02-09T16:00:24.000+0000" }, { "id": "182676", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This ticket duplicates private ticket TIMOB-5052 (which includes a complete test case). git commits will be tagged with this ticket number so that they show up in the history.", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T16:04:55.000+0000", "updated": "2012-02-09T16:07:07.000+0000" }, { "id": "182678", "author": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Example uploaded to: http://cl.ly/1w1k33390I2r2v0h002x\r\n\r\nYou can comment in/out the timers. Or just click the button, then delete whatever it manages to download and click again, and see that nothing comes down the wire.", "updateAuthor": { "name": "msmiller", "key": "msmiller", "displayName": "Mark Miller", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T16:13:47.000+0000", "updated": "2012-02-09T16:13:47.000+0000" }, { "id": "182683", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Attaching linked app.js for permanence.", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T16:25:01.000+0000", "updated": "2012-02-09T16:25:01.000+0000" }, { "id": "182701", "author": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Updated {{app.js}} to include directory creation for testing.", "updateAuthor": { "name": "stephentramer", "key": "stephentramer", "displayName": "Stephen Tramer", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-09T17:24:25.000+0000", "updated": "2012-02-09T17:24:25.000+0000" }, { "id": "183647", "author": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Pass: Tested with 1.8.2.v20120216154635 with iPhone Simulator 4.3.2/5.0 and iPhone 4 4.3.5 seeing the downloaded files into the directory", "updateAuthor": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-17T11:32:05.000+0000", "updated": "2012-02-17T11:32:05.000+0000" } ], "maxResults": 10, "total": 10, "startAt": 0 } } }