c

org.apache.daffodil.io

BacktrackingException

case class BacktrackingException(position: Long, maxBacktrackLength: Int) extends ThinException with Product with Serializable

There is a finite limit to the distance one can backtrack which is given by the implementation's use of a finite array of finite fixed size buckets. If a vast amount of data is read in and is more than the ultimate backtrack limit (number of buckets times bucket size) in size, then that will cause data buckets to effectively spill off into parser history, and the ability to backtrack to the points in the data they stored is lost along with them. Any time there is a point-of-uncertainty to which the parser could backtrack, and then the parser advances through more data than the backtracking maximum limit, the ability to backtrack to that point of uncertainty will be lost. This will be detected, and is a fatal error (Runtime SDE).

This situation is easiest to envision if BLOB objects are involved, but is not BLOB specific. A format with a choice, then in the first branch of the choice, a group and/or array of small data items, ultimately totaling in size to more than the backtrack limit, and then a branch failure, will cause this backtracking limit error with no BLOBs being used.

There is no limit created by this module of code to the size of a any data item having to fit within JVM byte array maximums, nor the JVM memory footprint even. Only a limitation on backtracking distance is created.

It is also worth noting that it is not the act of backtracking that directly cause an error. The error only occurs when someone tries to read from a bucket that has already been released.

Linear Supertypes
Serializable, Product, Equals, ThinException, Exception, Throwable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. BacktrackingException
  2. Serializable
  3. Product
  4. Equals
  5. ThinException
  6. Exception
  7. Throwable
  8. Serializable
  9. AnyRef
  10. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new BacktrackingException(position: Long, maxBacktrackLength: Int)

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  4. final def addSuppressed(arg0: Throwable): Unit
    Definition Classes
    Throwable
  5. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  6. def clone(): AnyRef
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()
  7. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  8. def fillInStackTrace(): Throwable
    Definition Classes
    Throwable
  9. def finalize(): Unit
    Attributes
    protected[lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. def getCause(): Throwable
    Definition Classes
    Throwable
  11. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  12. def getLocalizedMessage(): String
    Definition Classes
    Throwable
  13. def getMessage(): String
    Definition Classes
    ThinException → Throwable
  14. def getStackTrace(): Array[StackTraceElement]
    Definition Classes
    Throwable
  15. final def getSuppressed(): Array[Throwable]
    Definition Classes
    Throwable
  16. def initCause(arg0: Throwable): Throwable
    Definition Classes
    Throwable
  17. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  18. val maxBacktrackLength: Int
  19. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  20. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  21. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  22. val position: Long
  23. def printStackTrace(arg0: PrintWriter): Unit
    Definition Classes
    Throwable
  24. def printStackTrace(arg0: PrintStream): Unit
    Definition Classes
    Throwable
  25. def printStackTrace(): Unit
    Definition Classes
    Throwable
  26. def setStackTrace(arg0: Array[StackTraceElement]): Unit
    Definition Classes
    Throwable
  27. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  28. def toString(): String
    Definition Classes
    Throwable → AnyRef → Any
  29. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  31. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... ) @native()

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from ThinException

Inherited from Exception

Inherited from Throwable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped