Mercurial > jhg
comparison src/org/tmatesoft/hg/repo/HgDataFile.java @ 163:a5198b6487dc
Record reasons for slow status for future reference
| author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
|---|---|
| date | Thu, 10 Mar 2011 03:18:49 +0100 |
| parents | b413b16d10a5 |
| children | 41a778e3fd31 |
comparison
equal
deleted
inserted
replaced
| 162:c17a08095e44 | 163:a5198b6487dc |
|---|---|
| 190 } | 190 } |
| 191 | 191 |
| 192 public boolean isCopy() throws HgDataStreamException { | 192 public boolean isCopy() throws HgDataStreamException { |
| 193 if (metadata == null || !metadata.checked(0)) { | 193 if (metadata == null || !metadata.checked(0)) { |
| 194 // content() always initializes metadata. | 194 // content() always initializes metadata. |
| 195 // FIXME this is expensive way to find out metadata, distinct RevlogStream.Iterator would be better. | 195 // FIXME this is expensive way to find out metadata, distinct RevlogStream.Iterator would be better. |
| 196 // Alternatively, may parameterize MetadataContentPipe to do prepare only. | |
| 197 // For reference, when throwing CancelledException, hg status -A --rev 3:80 takes 70 ms | |
| 198 // however, if we just consume buffer instead (buffer.position(buffer.limit()), same command takes ~320ms | |
| 199 // (compared to command-line counterpart of 190ms) | |
| 196 try { | 200 try { |
| 197 content(0, new ByteChannel() { // No-op channel | 201 content(0, new ByteChannel() { // No-op channel |
| 198 public int write(ByteBuffer buffer) throws IOException { | 202 public int write(ByteBuffer buffer) throws IOException, CancelledException { |
| 199 // pretend we consumed whole buffer | 203 // pretend we consumed whole buffer |
| 200 int rv = buffer.remaining(); | 204 // int rv = buffer.remaining(); |
| 201 buffer.position(buffer.limit()); | 205 // buffer.position(buffer.limit()); |
| 202 return rv; | 206 // return rv; |
| 207 throw new CancelledException(); | |
| 203 } | 208 } |
| 204 }); | 209 }); |
| 210 } catch (CancelledException ex) { | |
| 211 // it's ok, we did that | |
| 205 } catch (Exception ex) { | 212 } catch (Exception ex) { |
| 206 throw new HgDataStreamException("Can't initialize metadata", ex); | 213 throw new HgDataStreamException("Can't initialize metadata", ex); |
| 207 } | 214 } |
| 208 } | 215 } |
| 209 if (!metadata.known(0)) { | 216 if (!metadata.known(0)) { |
